(function (t) { const e = (t["ko"] = t["ko"] || {}); e.dictionary = Object.assign(e.dictionary || {}, { "(may require Fn)": "(Fn 키가 필요할 수 있음)", "%0 of %1": "%0 / %1", Accept: "수락", Accessibility: "접근성", "Accessibility help": "접근성 도움말", "Advanced options": "고급 옵션", "Align cell text to the bottom": "셀 텍스트를 아래로 정렬", "Align cell text to the center": "셀 텍스트를 가로 가운데로 정렬", "Align cell text to the left": "셀 텍스트를 왼쪽으로 정렬", "Align cell text to the middle": "셀 텍스트를 세로 가운데로 정렬", "Align cell text to the right": "셀 텍스트를 오른쪽으로 정렬", "Align cell text to the top": "셀 텍스트를 위로 정렬", "Align center": "가운데 정렬", "Align left": "왼쪽 정렬", "Align right": "오른쪽 정렬", "Align table to the left": "테이블을 왼쪽으로 정렬", "Align table to the right": "테이블을 오른쪽으로 정렬", Alignment: "정렬", All: "전체", "Almost equal to": "거의 같음", Angle: "각", "Approximately equal to": "대략 같음", Aquamarine: "연한 청록색", Arrows: "화살표", "Asterisk operator": "별표 연산자", "Austral sign": "오스트랄 기호", "back with leftwards arrow above": "BACK 위 왼쪽 화살표", Background: "배경색", "Below, you can find a list of keyboard shortcuts that can be used in the editor.": "편집기에서 사용할 수 있는 키보드 단축키 목록을 아래에서 확인할 수 있습니다.", Big: "큰", "Bitcoin sign": "비트코인 기호", Black: "검은색", "Block quote": "인용 단락", Blue: "파랑색", "Blue marker": "파란색 마커", Bold: "굵게", "Bold text": "굵은 텍스트", Border: "테두리", "Break text": "텍스트 분리", Cancel: "취소", "Caption for image: %0": "이미지용 캡션: %0", "Caption for the image": "이미지용 캡션", "Cedi sign": "세디 기호", "Cell properties": "셀 속성", "Cent sign": "센트 기호", "Center table": "테이블을 가운데로 정렬", "Centered image": "가운데 정렬", "Change image text alternative": "대체 문구 변경", "Character categories": "문자 카테고리", "Characters: %0": "문자 수: %0", "Choose language": "언어 선택", Clear: "지우기", "Click to edit block": "클릭하여 블록 편집", Close: "닫기", "Close contextual balloons, dropdowns, and dialogs": "상황별 풍선, 드롭다운, 대화 상자 닫기", Code: "코드", "Colon sign": "콜론 기호", Color: "색", "Color picker": "색상 선택기", Column: "열", "Contains as member": "원소로 포함", "Content editing keystrokes": "콘텐츠 편집 키 입력", "Copy selected content": "선택된 콘텐츠 복사", "Copyright sign": "저작권 기호", "Create link": "링크 생성", "Cruzeiro sign": "크루제이루 기호", Currency: "통화", "Currency sign": "통화 기호", Custom: "사용자 지정", "Custom image size": "사용자 지정 이미지 크기", Dashed: "파선", "Decrease indent": "들여쓰기 줄이기", Default: "기본", "Degree sign": "도 기호", "Delete column": "열 삭제", "Delete row": "행 삭제", "Dim grey": "진한 회색", Dimensions: "크기", "Disable editing": "편집 비활성화", "Division sign": "나누기 기호", "Document colors": "문서 색깔들", "Dollar sign": "달러 기호", "Dong sign": "동 기호", Dotted: "점선", Double: "이중선", "Double dagger": "겹칼표", "Double exclamation mark": "겹느낌표", "Double low-9 quotation mark": "낮은 겹따옴표", "Double question mark": "겹물음표", Downloadable: "다운로드 가능", "downwards arrow to bar": "아래쪽 바를 향한 화살표", "downwards dashed arrow": "아래쪽 대시 화살표", "downwards double arrow": "아래쪽 겹화살표", "downwards simple arrow": "아래쪽 단순 화살표", "Drachma sign": "드라크마 기호", "Drag to move": "드래그하여 이동", "Dropdown toolbar": "드롭다운 툴바", "Edit block": "편집 영역", "Edit link": "링크 편집", "Edit source": "소스 편집", "Editor block content toolbar": "편집기 영역 내용 툴바", "Editor contextual toolbar": "편집기 문맥 툴바", "Editor dialog": "편집기 대화상자", "Editor editing area: %0": "편집기 편집 영역: %0", "Editor menu bar": "편집기 메뉴 표시줄", "Editor toolbar": "편집기 툴바", "Element of": "원소", "Em dash": "엠 대시", "Empty set": "공집합", "Empty snippet content": "빈 코드 조각 내용", "En dash": "엔 대시", "Enable editing": "편집 활성화", "end with leftwards arrow above": "END 위 왼쪽 화살표", "Enter image caption": "사진 설명을 입력하세요", "Enter table caption": "테이블 캡션 입력", "Error during image upload": "이미지 업로드 중에 오류 발생", "Euro sign": "유로 기호", "Euro-currency sign": "유로화 기호", "Exclamation question mark": "느낌표 물음표", "Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.": "현재 포커스가 맞춰진 버튼을 실행합니다. 편집기 콘텐츠와 상호 작용하는 버튼을 실행하면 포커스가 다시 콘텐츠로 이동합니다.", Find: "찾기", "Find and replace": "찾기 및 바꾸기", "Find in text…": "텍스트에서 찾기...", "Find in the document": "문서에서 찾기", "Font Background Color": "글자 배경 색깔", "Font Color": "글자 색깔", "Font Family": "글꼴 집합", "Font Size": "글자 크기", "For all": "전칭", "Fraction slash": "분수 슬래시", "French franc sign": "프랑스 프랑 기호", "Full size image": "꽉 찬 크기", "German penny sign": "독일 페니 기호", "Greater-than or equal to": "더 크거나 같음", "Greater-than sign": "더 큼 기호", Green: "초록색", "Green marker": "초록색 마커", "Green pen": "초록색 펜", Grey: "회색", Groove: "음각선", "Guarani sign": "과라니 기호", "Header column": "헤더 열", "Header row": "헤더 행", Height: "세로", "Help Contents. To close this dialog press ESC.": "도움말 내용입니다. 이 대화 상자를 닫으려면 ESC 키를 누르세요.", HEX: "HEX", Highlight: "강조", "Horizontal ellipsis": "세 점 줄임표", "Horizontal line": "수평선", "Horizontal text alignment toolbar": "가로 텍스트 정렬 도구 모음", "Hryvnia sign": "흐리브냐 기호", "HTML object": "HTML 오브젝트", "HTML snippet": "HTML 코드 조각", Huge: "매우 큰", "Identical to": "합동", "Image from computer": "컴퓨터에서 이미지 가져오기", "Image resize list": "사진 크기 목록", "Image toolbar": "사진 툴바", "Image upload complete": "이미지 업로드 완료", "image widget": "사진 위젯", "In line": "줄 안에", "Increase indent": "들여쓰기 늘리기", "Indian rupee sign": "인도 루피 기호", Infinity: "무한대", Insert: "삽입", "Insert a hard break (a new paragraph)": "단락 바꿈 삽입(새 단락)", "Insert a new paragraph directly after a widget": "위젯 바로 뒤에 새 단락 삽입", "Insert a new paragraph directly before a widget": "위젯 바로 앞에 새 단락 삽입", "Insert a new table row (when in the last cell of a table)": "새 표 행 삽입(표의 마지막 셀에 있을 때)", "Insert a soft break (a <br> element)": "줄 바꿈 삽입(<br> 요소)", "Insert column left": "왼쪽에 열 삽입", "Insert column right": "오른쪽에 열 삽입", "Insert HTML": "HTML 삽입", "Insert image": "사진 삽입", "Insert image via URL": "URL로 이미지 삽입", "Insert media": "미디어 삽입", "Insert paragraph after block": "블록 뒤에 단락 삽입", "Insert paragraph before block": "블록 앞에 단락 삽입", "Insert row above": "위에 행 삽입", "Insert row below": "아래에 행 삽입", "Insert table": "테이블 삽입", Inset: "측면 음각선", Integral: "적분", Intersection: "교집합", "Inverted exclamation mark": "역느낌표", "Inverted question mark": "역물음표", Italic: "기울임꼴", "Italic text": "기울인 텍스트", Justify: "양쪽 정렬", "Justify cell text": "셀 텍스트를 양쪽으로 정렬", "Keystrokes that can be used in a table cell": "표 셀에서 사용할 수 있는 키 입력", "Keystrokes that can be used when a widget is selected (for example: image, table, etc.)": "위젯이 선택되었을 때 사용할 수 있는 키 입력(예: 이미지, 표 등)", "Kip sign": "킵 기호", Language: "언어", Latin: "라틴", "Latin capital letter a with breve": "반달점 부호가 있는 라틴어 대문자 A", "Latin capital letter a with macron": "장음 부호가 있는 라틴어 대문자 A", "Latin capital letter a with ogonek": "꼬리 부호가 있는 라틴어 대문자 A", "Latin capital letter c with acute": "양음 부호가 있는 라틴어 대문자 C", "Latin capital letter c with caron": "반대 곡절 부호가 있는 라틴어 대문자 C", "Latin capital letter c with circumflex": "곡절 부호가 있는 라틴어 대문자 C", "Latin capital letter c with dot above": "위에 점 부호가 있는 라틴어 대문자 C", "Latin capital letter d with caron": "반대 곡절 부호가 있는 라틴어 대문자 D", "Latin capital letter d with stroke": "획 부호가 있는 라틴어 대문자 D", "Latin capital letter e with breve": "반달점 부호가 있는 라틴어 대문자 E", "Latin capital letter e with caron": "반대 곡절 부호가 있는 라틴어 대문자 E", "Latin capital letter e with dot above": "위에 점 부호가 있는 라틴어 대문자 E", "Latin capital letter e with macron": "장음 부호가 있는 라틴어 대문자 E", "Latin capital letter e with ogonek": "꼬리 부호가 있는 라틴어 대문자 E", "Latin capital letter eng": "라틴어 대문자 엥", "Latin capital letter g with breve": "반달점 부호가 있는 라틴어 대문자 G", "Latin capital letter g with cedilla": "갈고리 부호가 있는 라틴어 대문자 G", "Latin capital letter g with circumflex": "곡절 부호가 있는 라틴어 대문자 G", "Latin capital letter g with dot above": "위에 점 부호가 있는 라틴어 대문자 G", "Latin capital letter h with circumflex": "곡절 부호가 있는 라틴어 대문자 H", "Latin capital letter h with stroke": "획 부호가 있는 라틴어 대문자 H", "Latin capital letter i with breve": "반달점 부호가 있는 라틴어 대문자 I", "Latin capital letter i with dot above": "위에 점 부호가 있는 라틴어 대문자 I", "Latin capital letter i with macron": "장음 부호가 있는 라틴어 대문자 I", "Latin capital letter i with ogonek": "꼬리 부호가 있는 라틴어 대문자 I", "Latin capital letter i with tilde": "물결 부호가 있는 라틴어 대문자 I", "Latin capital letter j with circumflex": "곡절 부호가 있는 라틴어 대문자 J", "Latin capital letter k with cedilla": "갈고리 부호가 있는 라틴어 대문자 K", "Latin capital letter l with acute": "양음 부호가 있는 라틴어 대문자 I", "Latin capital letter l with caron": "반대 곡절 부호가 있는 라틴어 대문자 I", "Latin capital letter l with cedilla": "갈고리 부호가 있는 라틴어 대문자 I", "Latin capital letter l with middle dot": "중간에 점 부호가 있는 라틴어 대문자 I", "Latin capital letter l with stroke": "획 부호가 있는 라틴어 대문자 I", "Latin capital letter n with acute": "양음 부호가 있는 라틴어 대문자 N", "Latin capital letter n with caron": "반대 곡절 부호가 있는 라틴어 대문자 N", "Latin capital letter n with cedilla": "갈고리 부호가 있는 라틴어 대문자 N", "Latin capital letter o with breve": "반달점 부호가 있는 라틴어 대문자 O", "Latin capital letter o with double acute": "이중 양음 부호가 있는 라틴어 대문자 O", "Latin capital letter o with macron": "장음 부호가 있는 라틴어 대문자 O", "Latin capital letter r with acute": "양음 부호가 있는 라틴어 대문자 R", "Latin capital letter r with caron": "반대 곡절 부호가 있는 라틴어 대문자 R", "Latin capital letter r with cedilla": "갈고리 부호가 있는 라틴어 대문자 R", "Latin capital letter s with acute": "양음 부호가 있는 라틴어 대문자 S", "Latin capital letter s with caron": "반대 곡절 부호가 있는 라틴어 대문자 S", "Latin capital letter s with cedilla": "갈고리 부호가 있는 라틴어 대문자 S", "Latin capital letter s with circumflex": "곡절 부호가 있는 라틴어 대문자 S", "Latin capital letter t with caron": "반대 곡절 부호가 있는 라틴어 대문자 T", "Latin capital letter t with cedilla": "갈고리 부호가 있는 라틴어 대문자 T", "Latin capital letter t with stroke": "획 부호가 있는 라틴어 대문자 T", "Latin capital letter u with breve": "반달점 부호가 있는 라틴어 대문자 U", "Latin capital letter u with double acute": "이중 양음 부호가 있는 라틴어 대문자 U", "Latin capital letter u with macron": "장음 부호가 있는 라틴어 대문자 U", "Latin capital letter u with ogonek": "꼬리 부호가 있는 라틴어 대문자 U", "Latin capital letter u with ring above": "위에 고리가 있는 라틴어 대문자 U", "Latin capital letter u with tilde": "물결 부호가 있는 라틴어 대문자 U", "Latin capital letter w with circumflex": "곡절 부호가 있는 라틴어 대문자 W", "Latin capital letter y with circumflex": "곡절 부호가 있는 라틴어 대문자 Y", "Latin capital letter y with diaeresis": "분음 부호가 있는 라틴어 대문자 Y", "Latin capital letter z with acute": "양음 부호가 있는 라틴어 대문자 Z", "Latin capital letter z with caron": "반대 곡절 부호가 있는 라틴어 대문자 Z", "Latin capital letter z with dot above": "위에 점 부호가 있는 라틴어 대문자 Z", "Latin capital ligature ij": "라틴어 대문자 합자 IJ", "Latin capital ligature oe": "라틴어 대문자 합자 OE", "Latin small letter a with breve": "반달점 부호가 있는 라틴어 소문자 a", "Latin small letter a with macron": "장음 부호가 있는 라틴어 소문자 a", "Latin small letter a with ogonek": "꼬리 부호가 있는 라틴어 소문자 a", "Latin small letter c with acute": "양음 부호가 있는 라틴어 소문자 c", "Latin small letter c with caron": "반대 곡절 부호가 있는 라틴어 소문자 c", "Latin small letter c with circumflex": "곡절 부호가 있는 라틴어 소문자 c", "Latin small letter c with dot above": "위에 점 부호가 있는 라틴어 소문자 c", "Latin small letter d with caron": "반대 곡절 부호가 있는 라틴어 소문자 d", "Latin small letter d with stroke": "획 부호가 있는 라틴어 소문자 d", "Latin small letter dotless i": "라틴어 소문자 점 없는 i", "Latin small letter e with breve": "반달점 부호가 있는 라틴어 소문자 e", "Latin small letter e with caron": "반대 곡절 부호가 있는 라틴어 소문자 e", "Latin small letter e with dot above": "위에 점 부호가 있는 라틴어 소문자 e", "Latin small letter e with macron": "장음 부호가 있는 라틴어 소문자 e", "Latin small letter e with ogonek": "꼬리 부호가 있는 라틴어 소문자 e", "Latin small letter eng": "라틴어 소문자 엥", "Latin small letter f with hook": "밑이 구부러진 라틴어 소문자 f", "Latin small letter g with breve": "반달점 부호가 있는 라틴어 소문자 g", "Latin small letter g with cedilla": "갈고리 부호가 있는 라틴어 소문자 g", "Latin small letter g with circumflex": "곡절 부호가 있는 라틴어 소문자 g", "Latin small letter g with dot above": "위에 점 부호가 있는 라틴어 소문자 g", "Latin small letter h with circumflex": "곡절 부호가 있는 라틴어 소문자 h", "Latin small letter h with stroke": "획 부호가 있는 라틴어 소문자 h", "Latin small letter i with breve": "반달점 부호가 있는 라틴어 소문자 i", "Latin small letter i with macron": "장음 부호가 있는 라틴어 소문자 i", "Latin small letter i with ogonek": "꼬리 부호가 있는 라틴어 소문자 i", "Latin small letter i with tilde": "물결 부호가 있는 라틴어 소문자 i", "Latin small letter j with circumflex": "곡절 부호가 있는 라틴어 소문자 j", "Latin small letter k with cedilla": "갈고리 부호가 있는 라틴어 소문자 k", "Latin small letter kra": "라틴어 소문자 크라", "Latin small letter l with acute": "양음 부호가 있는 라틴어 소문자 i", "Latin small letter l with caron": "반대 곡절 부호가 있는 라틴어 소문자 i", "Latin small letter l with cedilla": "갈고리 부호가 있는 라틴어 소문자 i", "Latin small letter l with middle dot": "중간에 점 부호가 있는 라틴어 소문자 i", "Latin small letter l with stroke": "획 부호가 있는 라틴어 소문자 i", "Latin small letter long s": "라틴어 소문자 긴 s", "Latin small letter n preceded by apostrophe": "아포스트로피 다음에 있는 라틴어 소문자 n", "Latin small letter n with acute": "양음 부호가 있는 라틴어 소문자 n", "Latin small letter n with caron": "반대 곡절 부호가 있는 라틴어 소문자 n", "Latin small letter n with cedilla": "갈고리 부호가 있는 라틴어 소문자 n", "Latin small letter o with breve": "반달점 부호가 있는 라틴어 소문자 o", "Latin small letter o with double acute": "이중 양음 부호가 있는 라틴어 소문자 o", "Latin small letter o with macron": "장음 부호가 있는 라틴어 소문자 o", "Latin small letter r with acute": "양음 부호가 있는 라틴어 소문자 r", "Latin small letter r with caron": "반대 곡절 부호가 있는 라틴어 소문자 r", "Latin small letter r with cedilla": "갈고리 부호가 있는 라틴어 소문자 r", "Latin small letter s with acute": "양음 부호가 있는 라틴어 소문자 s", "Latin small letter s with caron": "반대 곡절 부호가 있는 라틴어 소문자 s", "Latin small letter s with cedilla": "갈고리 부호가 있는 라틴어 소문자 s", "Latin small letter s with circumflex": "곡절 부호가 있는 라틴어 소문자 s", "Latin small letter t with caron": "반대 곡절 부호가 있는 라틴어 소문자 t", "Latin small letter t with cedilla": "갈고리 부호가 있는 라틴어 소문자 t", "Latin small letter t with stroke": "획 부호가 있는 라틴어 소문자 t", "Latin small letter u with breve": "반달점 부호가 있는 라틴어 소문자 u", "Latin small letter u with double acute": "이중 양음 부호가 있는 라틴어 소문자 u", "Latin small letter u with macron": "장음 부호가 있는 라틴어 소문자 u", "Latin small letter u with ogonek": "꼬리 부호가 있는 라틴어 소문자 u", "Latin small letter u with ring above": "위에 고리가 있는 라틴어 소문자 u", "Latin small letter u with tilde": "물결 부호가 있는 라틴어 소문자 u", "Latin small letter w with circumflex": "곡절 부호가 있는 라틴어 소문자 w", "Latin small letter y with circumflex": "곡절 부호가 있는 라틴어 소문자 y", "Latin small letter z with acute": "양음 부호가 있는 라틴어 소문자 z", "Latin small letter z with caron": "반대 곡절 부호가 있는 라틴어 소문자 z", "Latin small letter z with dot above": "위에 점 부호가 있는 라틴어 소문자 z", "Latin small ligature ij": "라틴어 소문자 합자 ij", "Latin small ligature oe": "라틴어 소문자 합자 oe", "Left aligned image": "왼쪽 정렬", "Left double quotation mark": "왼쪽 큰따옴표", "Left single quotation mark": "왼쪽 작은따옴표", "Left-pointing double angle quotation mark": "왼쪽 겹화살괄호", "leftwards arrow to bar": "왼쪽 바를 향한 화살표", "leftwards dashed arrow": "왼쪽 대시 화살표", "leftwards double arrow": "왼쪽 겹화살표", "leftwards simple arrow": "왼쪽 단순 화살표", "Less-than or equal to": "더 작거나 같음", "Less-than sign": "더 작음 기호", "Light blue": "연한 파랑색", "Light green": "연한 초록색", "Light grey": "밝은 회색", Link: "링크", "Link image": "사진 링크", "Link URL": "링크 주소", "Link URL must not be empty.": "링크 URL은 비워둘 수 없습니다.", "Lira sign": "리라 기호", "Livre tournois sign": "리브르 트르누아 기호", "Logical and": "논리곱", "Logical or": "논리합", Macron: "장음 부호", "Manat sign": "마나트 기호", "Match case": "대/소문자 구분", Mathematical: "수식", "Media toolbar": "미디어 툴바", "Media URL": "미디어 URL", "media widget": "미디어 위젯", MENU_BAR_MENU_EDIT: "수정", MENU_BAR_MENU_FILE: "파일", MENU_BAR_MENU_FONT: "글꼴", MENU_BAR_MENU_FORMAT: "서식", MENU_BAR_MENU_HELP: "도움말", MENU_BAR_MENU_INSERT: "삽입", MENU_BAR_MENU_TEXT: "텍스트", MENU_BAR_MENU_TOOLS: "도구", MENU_BAR_MENU_VIEW: "보기", "Merge cell down": "아래 셀과 병합", "Merge cell left": "왼쪽 셀과 병합", "Merge cell right": "오른쪽 셀과 병합", "Merge cell up": "위 셀과 병합", "Merge cells": "셀 병합", "Mill sign": "밀 기호", "Minus sign": "빼기 기호", "Move focus between form fields (inputs, buttons, etc.)": "양식 필드(입력, 버튼 등) 간에 포커스 이동", "Move focus in and out of an active dialog window": "활성화된 대화 창 안팎으로 포커스 이동", "Move focus to the menu bar, navigate between menu bars": "메뉴 표시줄로 포커스 이동, 메뉴 표시줄 탐색", "Move focus to the toolbar, navigate between toolbars": "도구 모음으로 포커스 이동, 도구 모음 간 탐색", "Move out of a link": "링크 밖으로 이동", "Move out of an inline code style": "인라인 코드 스타일 밖으로 이동", "Move the caret to allow typing directly after a widget": "위젯 바로 뒤에 입력할 수 있도록 삽입 기호 이동", "Move the caret to allow typing directly before a widget": "위젯 바로 앞에 입력할 수 있도록 삽입 기호 이동", "Move the selection to the next cell": "선택 항목을 다음 셀로 이동", "Move the selection to the previous cell": "선택 항목을 이전 셀로 이동", "Multiplication sign": "곱하기 기호", "N-ary product": "중복순열", "N-ary summation": "누계합", Nabla: "나블라", "Naira sign": "나이라 기호", "Navigate editable regions": "편집 가능한 구역 탐색", "Navigate through the table": "표 탐색", "Navigate through the toolbar or menu bar": "도구 모음 또는 메뉴 표시줄 탐색", "New sheqel sign": "뉴 세켈 기호", Next: "다음", "Next editable region": "다음 편집 가능한 구역", "Next result": "다음 결과", "No preview available": "미리보기를 이용할 수 없습니다", "No results found": "결과 찾을 수 없음", "No searchable items": "검색 가능한 항목 없음", None: "선 없음", "Nordic mark sign": "노르딕 마크 기호", "Not an element of": "원소가 아님", "Not equal to": "같지 않음", "Not sign": "부정 기호", "on with exclamation mark with left right arrow above": "ON! 위 왼쪽 오른쪽 화살표", "Open in a new tab": "새 탭에서 열기", "Open link in new tab": "새 탭에서 링크 열기", "Open media in new tab": "새 탭에서 미디어 열기", "Open the accessibility help dialog": "접근성 도움말 대화 상자 열기", Orange: "주황색", Original: "원본", Outset: "측면 양각선", Overline: "윗줄", Padding: "여백", "Paragraph sign": "단락 기호", "Partial differential": "편미분", "Paste content": "콘텐츠 붙여넣기", "Paste content as plain text": "콘텐츠를 일반 텍스트로 붙여넣기", "Paste raw HTML here...": "원시 HTML을 여기에 붙여넣으세요...", "Paste the media URL in the input.": "미디어 URL을 입력해주세요.", "Per mille sign": "퍼 마일 기호", "Per ten thousand sign": "만분율 기호", "Peseta sign": "페세타 기호", "Peso sign": "페소 기호", "Pink marker": "분홍색 마커", 'Please enter a valid color (e.g. "ff0000").': '유효한 색상을 입력해 주세요(예를 들어, "ff0000").', "Plus-minus sign": "더하기 빼기 기호", "Pound sign": "파운드 기호", "Press %0 for help.": "도움말을 보려면 %0 키를 누르세요.", "Press Enter to type after or press Shift + Enter to type before the widget": "엔터를 눌러서 위젯 뒤에 입력하거나 시프트 + 엔터를 눌러서 위젯 앞에 입력하세요", Previous: "이전", "Previous editable region": "이전 편집 가능한 구역", "Previous result": "이전 결과", "Proportional to": "비례", Purple: "보라색", "Question exclamation mark": "물음표 느낌표", Red: "빨간색", "Red pen": "빨간색 펜", Redo: "다시 실행", "Registered sign": "등록 상표 기호", "Remove color": "색깔 제거", "Remove highlight": "강조 제거", "Remove language": "언어 제거", Replace: "바꾸기", "Replace all": "모두 바꾸기", "Replace from computer": "컴퓨터에서 교체", "Replace image": "이미지 교체", "Replace image from computer": "컴퓨터에서 이미지 교체", "Replace with…": "바꿀 내용...", "Resize image": "사진 크기 조절", "Resize image (in %0)": "이미지 크기 조정하기(%0 이내)", "Resize image to %0": "사진의 크기를 %0으로 조절", "Resize image to the original size": "사진을 원래 크기로 돌려놓기", "Restore default": "기본값 복원", "Reversed paragraph sign": "반전된 단락 기호", "Rich Text Editor": "서식 있는 텍스트 편집기", Ridge: "양각선", "Right aligned image": "오른쪽 정렬", "Right double quotation mark": "오른쪽 큰따옴표", "Right single quotation mark": "오른쪽 작은따옴표", "Right-pointing double angle quotation mark": "오른쪽 겹화살괄호", "rightwards arrow to bar": "오른쪽 바를 향한 화살표", "rightwards dashed arrow": "오른쪽 대시 화살표", "rightwards double arrow": "오른쪽 겹화살표", "rightwards simple arrow": "오른쪽 단순 화살표", Row: "행", "Ruble sign": "루블 기호", "Rupee sign": "루피 기호", Save: "저장", "Save changes": "변경사항 저장", "Section sign": "구역 기호", "Select all": "전체 선택", "Select column": "열 선택", "Select row": "행 선택", "Show blocks": "블록 표시", "Show more items": "더보기", "Show source": "소스 표시", "Side image": "본문 옆에 배치", "Single left-pointing angle quotation mark": "왼쪽 홑화살괄호", "Single low-9 quotation mark": "낮은 홑따옴표", "Single right-pointing angle quotation mark": "오른쪽 홑화살괄호", Small: "작은", Solid: "실선", "soon with rightwards arrow above": "SOON 위 오른쪽 화살표", Source: "소스", "Special characters": "특수 문자", "Spesmilo sign": "스페스밀로 기호", "Split cell horizontally": "가로로 셀 분할", "Split cell vertically": "세로로 셀 분할", "Square root": "제곱근", Strikethrough: "취소선", "Strikethrough text": "텍스트 취소선", Style: "스타일", Subscript: "아래 첨자", Superscript: "위 첨자", Table: "표", "Table alignment toolbar": "표 정렬 도구 모음", "Table cell text alignment": "표 셀 텍스트 정렬", "Table properties": "표 속성", "Table toolbar": "표 도구 모음", "Tenge sign": "텡게 기호", Text: "텍스트", "Text alignment": "텍스트 정렬", "Text alignment toolbar": "텍스트 정렬 툴바", "Text alternative": "대체 문구", "Text highlight toolbar": "글자 강조 툴바", "Text to find must not be empty.": "찾을 텍스트를 입력해야 합니다.", 'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".': '유효하지 않은 색입니다. "#FF0000"이나 "rgb(255,0,0)", 또는 "red"를 입력해 보세요.', "The URL must not be empty.": "URL이 비어있을 수 없습니다.", 'The value is invalid. Try "10px" or "2em" or simply "2".': '유효하지 않은 값입니다. "10px"나 "2em" 또는 그냥 "2"를 입력해 보세요.', "The value must not be empty.": "값은 비워둘 수 없습니다.", "The value should be a plain number.": "일반 숫자로 된 값을 입력해야 합니다.", "There exists": "존재", "These keyboard shortcuts allow for quick access to content editing features.": "이러한 키보드 단축키를 사용하면 콘텐츠 편집 기능을 빠르게 사용할 수 있습니다.", "This link has no URL": "이 주소에는 URL이 없습니다.", "This media URL is not supported.": "이 미디어 URL은 지원되지 않습니다.", "Tilde operator": "물결표 연산자", Tiny: "매우 작은", "Tip: Find some text first in order to replace it.": "팁: 바꾸려는 텍스트를 먼저 찾으세요.", "Tip: Paste the URL into the content to embed faster.": "팁: URL을 붙여넣으면 더 빨리 삽입할 수 있습니다.", "Toggle caption off": "캡션 지우기", "Toggle caption on": "캡션 넣기", "top with upwards arrow above": "TOP 위 위쪽 화살표", "Trade mark sign": "상표 기호", "Tugrik sign": "투그리크 기호", "Turkish lira sign": "터키 리라 기호", Turquoise: "청록색", "Two dot leader": "두 점 줄임표", Underline: "밑줄", "Underline text": "텍스트 밑줄", Undo: "실행 취소", Union: "합집합", Unlink: "링크 삭제", "up down arrow with base": "받침이 있는 위아래 화살표", Update: "업데이트", "Update image URL": "이미지 URL 업데이트", "Upload failed": "업로드 실패", "Upload from computer": "컴퓨터에서 업로드", "Upload image from computer": "컴퓨터에서 이미지 업로드", "Upload in progress": "업로드 진행 중", "Uploading image": "이미지 업로드 중", "upwards arrow to bar": "위쪽 바를 향한 화살표", "upwards dashed arrow": "위쪽 대시 화살표", "upwards double arrow": "위쪽 겹화살표", "upwards simple arrow": "위쪽 단순 화살표", "Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.": "다음 키 입력을 사용하여 CKEditor 5 사용자 인터페이스를 더 효율적으로 탐색하세요.", "User interface and content navigation keystrokes": "사용자 인터페이스 및 콘텐츠 탐색 키 입력", "Vertical text alignment toolbar": "세로 텍스트 정렬 도구 모음", "Vulgar fraction one half": "2분의 1", "Vulgar fraction one quarter": "4분의 1", "Vulgar fraction three quarters": "4분의 3", White: "흰색", "Whole words only": "전체 단어만", "Widget toolbar": "위젯 툴바", Width: "가로", "Won sign": "원 기호", "Words: %0": "단어 수: %0", "Wrap text": "텍스트 줄 바꿈", Yellow: "노랑색", "Yellow marker": "노란색 마커", "Yen sign": "엔 기호", }); e.getPluralForm = function (t) { return 0; }; })(window.CKEDITOR_TRANSLATIONS || (window.CKEDITOR_TRANSLATIONS = {})); /*! * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. */ (function t(e, n) { if (typeof exports === "object" && typeof module === "object") module.exports = n(); else if (typeof define === "function" && define.amd) define([], n); else if (typeof exports === "object") exports["ClassicEditor"] = n(); else e["ClassicEditor"] = n(); })(self, () => (() => { var t = { 5659: (t, e, n) => { const i = n(8156); const o = {}; for (const t of Object.keys(i)) { o[i[t]] = t; } const r = { rgb: { channels: 3, labels: "rgb" }, hsl: { channels: 3, labels: "hsl" }, hsv: { channels: 3, labels: "hsv" }, hwb: { channels: 3, labels: "hwb" }, cmyk: { channels: 4, labels: "cmyk" }, xyz: { channels: 3, labels: "xyz" }, lab: { channels: 3, labels: "lab" }, lch: { channels: 3, labels: "lch" }, hex: { channels: 1, labels: ["hex"] }, keyword: { channels: 1, labels: ["keyword"] }, ansi16: { channels: 1, labels: ["ansi16"] }, ansi256: { channels: 1, labels: ["ansi256"] }, hcg: { channels: 3, labels: ["h", "c", "g"] }, apple: { channels: 3, labels: ["r16", "g16", "b16"] }, gray: { channels: 1, labels: ["gray"] }, }; t.exports = r; for (const t of Object.keys(r)) { if (!("channels" in r[t])) { throw new Error("missing channels property: " + t); } if (!("labels" in r[t])) { throw new Error("missing channel labels property: " + t); } if (r[t].labels.length !== r[t].channels) { throw new Error("channel and label counts mismatch: " + t); } const { channels: e, labels: n } = r[t]; delete r[t].channels; delete r[t].labels; Object.defineProperty(r[t], "channels", { value: e }); Object.defineProperty(r[t], "labels", { value: n }); } r.rgb.hsl = function (t) { const e = t[0] / 255; const n = t[1] / 255; const i = t[2] / 255; const o = Math.min(e, n, i); const r = Math.max(e, n, i); const s = r - o; let a; let c; if (r === o) { a = 0; } else if (e === r) { a = (n - i) / s; } else if (n === r) { a = 2 + (i - e) / s; } else if (i === r) { a = 4 + (e - n) / s; } a = Math.min(a * 60, 360); if (a < 0) { a += 360; } const l = (o + r) / 2; if (r === o) { c = 0; } else if (l <= 0.5) { c = s / (r + o); } else { c = s / (2 - r - o); } return [a, c * 100, l * 100]; }; r.rgb.hsv = function (t) { let e; let n; let i; let o; let r; const s = t[0] / 255; const a = t[1] / 255; const c = t[2] / 255; const l = Math.max(s, a, c); const d = l - Math.min(s, a, c); const u = function (t) { return (l - t) / 6 / d + 1 / 2; }; if (d === 0) { o = 0; r = 0; } else { r = d / l; e = u(s); n = u(a); i = u(c); if (s === l) { o = i - n; } else if (a === l) { o = 1 / 3 + e - i; } else if (c === l) { o = 2 / 3 + n - e; } if (o < 0) { o += 1; } else if (o > 1) { o -= 1; } } return [o * 360, r * 100, l * 100]; }; r.rgb.hwb = function (t) { const e = t[0]; const n = t[1]; let i = t[2]; const o = r.rgb.hsl(t)[0]; const s = (1 / 255) * Math.min(e, Math.min(n, i)); i = 1 - (1 / 255) * Math.max(e, Math.max(n, i)); return [o, s * 100, i * 100]; }; r.rgb.cmyk = function (t) { const e = t[0] / 255; const n = t[1] / 255; const i = t[2] / 255; const o = Math.min(1 - e, 1 - n, 1 - i); const r = (1 - e - o) / (1 - o) || 0; const s = (1 - n - o) / (1 - o) || 0; const a = (1 - i - o) / (1 - o) || 0; return [r * 100, s * 100, a * 100, o * 100]; }; function s(t, e) { return (t[0] - e[0]) ** 2 + (t[1] - e[1]) ** 2 + (t[2] - e[2]) ** 2; } r.rgb.keyword = function (t) { const e = o[t]; if (e) { return e; } let n = Infinity; let r; for (const e of Object.keys(i)) { const o = i[e]; const a = s(t, o); if (a < n) { n = a; r = e; } } return r; }; r.keyword.rgb = function (t) { return i[t]; }; r.rgb.xyz = function (t) { let e = t[0] / 255; let n = t[1] / 255; let i = t[2] / 255; e = e > 0.04045 ? ((e + 0.055) / 1.055) ** 2.4 : e / 12.92; n = n > 0.04045 ? ((n + 0.055) / 1.055) ** 2.4 : n / 12.92; i = i > 0.04045 ? ((i + 0.055) / 1.055) ** 2.4 : i / 12.92; const o = e * 0.4124 + n * 0.3576 + i * 0.1805; const r = e * 0.2126 + n * 0.7152 + i * 0.0722; const s = e * 0.0193 + n * 0.1192 + i * 0.9505; return [o * 100, r * 100, s * 100]; }; r.rgb.lab = function (t) { const e = r.rgb.xyz(t); let n = e[0]; let i = e[1]; let o = e[2]; n /= 95.047; i /= 100; o /= 108.883; n = n > 0.008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116; i = i > 0.008856 ? i ** (1 / 3) : 7.787 * i + 16 / 116; o = o > 0.008856 ? o ** (1 / 3) : 7.787 * o + 16 / 116; const s = 116 * i - 16; const a = 500 * (n - i); const c = 200 * (i - o); return [s, a, c]; }; r.hsl.rgb = function (t) { const e = t[0] / 360; const n = t[1] / 100; const i = t[2] / 100; let o; let r; let s; if (n === 0) { s = i * 255; return [s, s, s]; } if (i < 0.5) { o = i * (1 + n); } else { o = i + n - i * n; } const a = 2 * i - o; const c = [0, 0, 0]; for (let t = 0; t < 3; t++) { r = e + (1 / 3) * -(t - 1); if (r < 0) { r++; } if (r > 1) { r--; } if (6 * r < 1) { s = a + (o - a) * 6 * r; } else if (2 * r < 1) { s = o; } else if (3 * r < 2) { s = a + (o - a) * (2 / 3 - r) * 6; } else { s = a; } c[t] = s * 255; } return c; }; r.hsl.hsv = function (t) { const e = t[0]; let n = t[1] / 100; let i = t[2] / 100; let o = n; const r = Math.max(i, 0.01); i *= 2; n *= i <= 1 ? i : 2 - i; o *= r <= 1 ? r : 2 - r; const s = (i + n) / 2; const a = i === 0 ? (2 * o) / (r + o) : (2 * n) / (i + n); return [e, a * 100, s * 100]; }; r.hsv.rgb = function (t) { const e = t[0] / 60; const n = t[1] / 100; let i = t[2] / 100; const o = Math.floor(e) % 6; const r = e - Math.floor(e); const s = 255 * i * (1 - n); const a = 255 * i * (1 - n * r); const c = 255 * i * (1 - n * (1 - r)); i *= 255; switch (o) { case 0: return [i, c, s]; case 1: return [a, i, s]; case 2: return [s, i, c]; case 3: return [s, a, i]; case 4: return [c, s, i]; case 5: return [i, s, a]; } }; r.hsv.hsl = function (t) { const e = t[0]; const n = t[1] / 100; const i = t[2] / 100; const o = Math.max(i, 0.01); let r; let s; s = (2 - n) * i; const a = (2 - n) * o; r = n * o; r /= a <= 1 ? a : 2 - a; r = r || 0; s /= 2; return [e, r * 100, s * 100]; }; r.hwb.rgb = function (t) { const e = t[0] / 360; let n = t[1] / 100; let i = t[2] / 100; const o = n + i; let r; if (o > 1) { n /= o; i /= o; } const s = Math.floor(6 * e); const a = 1 - i; r = 6 * e - s; if ((s & 1) !== 0) { r = 1 - r; } const c = n + r * (a - n); let l; let d; let u; switch (s) { default: case 6: case 0: l = a; d = c; u = n; break; case 1: l = c; d = a; u = n; break; case 2: l = n; d = a; u = c; break; case 3: l = n; d = c; u = a; break; case 4: l = c; d = n; u = a; break; case 5: l = a; d = n; u = c; break; } return [l * 255, d * 255, u * 255]; }; r.cmyk.rgb = function (t) { const e = t[0] / 100; const n = t[1] / 100; const i = t[2] / 100; const o = t[3] / 100; const r = 1 - Math.min(1, e * (1 - o) + o); const s = 1 - Math.min(1, n * (1 - o) + o); const a = 1 - Math.min(1, i * (1 - o) + o); return [r * 255, s * 255, a * 255]; }; r.xyz.rgb = function (t) { const e = t[0] / 100; const n = t[1] / 100; const i = t[2] / 100; let o; let r; let s; o = e * 3.2406 + n * -1.5372 + i * -0.4986; r = e * -0.9689 + n * 1.8758 + i * 0.0415; s = e * 0.0557 + n * -0.204 + i * 1.057; o = o > 0.0031308 ? 1.055 * o ** (1 / 2.4) - 0.055 : o * 12.92; r = r > 0.0031308 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92; s = s > 0.0031308 ? 1.055 * s ** (1 / 2.4) - 0.055 : s * 12.92; o = Math.min(Math.max(0, o), 1); r = Math.min(Math.max(0, r), 1); s = Math.min(Math.max(0, s), 1); return [o * 255, r * 255, s * 255]; }; r.xyz.lab = function (t) { let e = t[0]; let n = t[1]; let i = t[2]; e /= 95.047; n /= 100; i /= 108.883; e = e > 0.008856 ? e ** (1 / 3) : 7.787 * e + 16 / 116; n = n > 0.008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116; i = i > 0.008856 ? i ** (1 / 3) : 7.787 * i + 16 / 116; const o = 116 * n - 16; const r = 500 * (e - n); const s = 200 * (n - i); return [o, r, s]; }; r.lab.xyz = function (t) { const e = t[0]; const n = t[1]; const i = t[2]; let o; let r; let s; r = (e + 16) / 116; o = n / 500 + r; s = r - i / 200; const a = r ** 3; const c = o ** 3; const l = s ** 3; r = a > 0.008856 ? a : (r - 16 / 116) / 7.787; o = c > 0.008856 ? c : (o - 16 / 116) / 7.787; s = l > 0.008856 ? l : (s - 16 / 116) / 7.787; o *= 95.047; r *= 100; s *= 108.883; return [o, r, s]; }; r.lab.lch = function (t) { const e = t[0]; const n = t[1]; const i = t[2]; let o; const r = Math.atan2(i, n); o = (r * 360) / 2 / Math.PI; if (o < 0) { o += 360; } const s = Math.sqrt(n * n + i * i); return [e, s, o]; }; r.lch.lab = function (t) { const e = t[0]; const n = t[1]; const i = t[2]; const o = (i / 360) * 2 * Math.PI; const r = n * Math.cos(o); const s = n * Math.sin(o); return [e, r, s]; }; r.rgb.ansi16 = function (t, e = null) { const [n, i, o] = t; let s = e === null ? r.rgb.hsv(t)[2] : e; s = Math.round(s / 50); if (s === 0) { return 30; } let a = 30 + ((Math.round(o / 255) << 2) | (Math.round(i / 255) << 1) | Math.round(n / 255)); if (s === 2) { a += 60; } return a; }; r.hsv.ansi16 = function (t) { return r.rgb.ansi16(r.hsv.rgb(t), t[2]); }; r.rgb.ansi256 = function (t) { const e = t[0]; const n = t[1]; const i = t[2]; if (e === n && n === i) { if (e < 8) { return 16; } if (e > 248) { return 231; } return Math.round(((e - 8) / 247) * 24) + 232; } const o = 16 + 36 * Math.round((e / 255) * 5) + 6 * Math.round((n / 255) * 5) + Math.round((i / 255) * 5); return o; }; r.ansi16.rgb = function (t) { let e = t % 10; if (e === 0 || e === 7) { if (t > 50) { e += 3.5; } e = (e / 10.5) * 255; return [e, e, e]; } const n = (~~(t > 50) + 1) * 0.5; const i = (e & 1) * n * 255; const o = ((e >> 1) & 1) * n * 255; const r = ((e >> 2) & 1) * n * 255; return [i, o, r]; }; r.ansi256.rgb = function (t) { if (t >= 232) { const e = (t - 232) * 10 + 8; return [e, e, e]; } t -= 16; let e; const n = (Math.floor(t / 36) / 5) * 255; const i = (Math.floor((e = t % 36) / 6) / 5) * 255; const o = ((e % 6) / 5) * 255; return [n, i, o]; }; r.rgb.hex = function (t) { const e = ((Math.round(t[0]) & 255) << 16) + ((Math.round(t[1]) & 255) << 8) + (Math.round(t[2]) & 255); const n = e.toString(16).toUpperCase(); return "000000".substring(n.length) + n; }; r.hex.rgb = function (t) { const e = t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); if (!e) { return [0, 0, 0]; } let n = e[0]; if (e[0].length === 3) { n = n .split("") .map((t) => t + t) .join(""); } const i = parseInt(n, 16); const o = (i >> 16) & 255; const r = (i >> 8) & 255; const s = i & 255; return [o, r, s]; }; r.rgb.hcg = function (t) { const e = t[0] / 255; const n = t[1] / 255; const i = t[2] / 255; const o = Math.max(Math.max(e, n), i); const r = Math.min(Math.min(e, n), i); const s = o - r; let a; let c; if (s < 1) { a = r / (1 - s); } else { a = 0; } if (s <= 0) { c = 0; } else if (o === e) { c = ((n - i) / s) % 6; } else if (o === n) { c = 2 + (i - e) / s; } else { c = 4 + (e - n) / s; } c /= 6; c %= 1; return [c * 360, s * 100, a * 100]; }; r.hsl.hcg = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = n < 0.5 ? 2 * e * n : 2 * e * (1 - n); let o = 0; if (i < 1) { o = (n - 0.5 * i) / (1 - i); } return [t[0], i * 100, o * 100]; }; r.hsv.hcg = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = e * n; let o = 0; if (i < 1) { o = (n - i) / (1 - i); } return [t[0], i * 100, o * 100]; }; r.hcg.rgb = function (t) { const e = t[0] / 360; const n = t[1] / 100; const i = t[2] / 100; if (n === 0) { return [i * 255, i * 255, i * 255]; } const o = [0, 0, 0]; const r = (e % 1) * 6; const s = r % 1; const a = 1 - s; let c = 0; switch (Math.floor(r)) { case 0: o[0] = 1; o[1] = s; o[2] = 0; break; case 1: o[0] = a; o[1] = 1; o[2] = 0; break; case 2: o[0] = 0; o[1] = 1; o[2] = s; break; case 3: o[0] = 0; o[1] = a; o[2] = 1; break; case 4: o[0] = s; o[1] = 0; o[2] = 1; break; default: o[0] = 1; o[1] = 0; o[2] = a; } c = (1 - n) * i; return [ (n * o[0] + c) * 255, (n * o[1] + c) * 255, (n * o[2] + c) * 255, ]; }; r.hcg.hsv = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = e + n * (1 - e); let o = 0; if (i > 0) { o = e / i; } return [t[0], o * 100, i * 100]; }; r.hcg.hsl = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = n * (1 - e) + 0.5 * e; let o = 0; if (i > 0 && i < 0.5) { o = e / (2 * i); } else if (i >= 0.5 && i < 1) { o = e / (2 * (1 - i)); } return [t[0], o * 100, i * 100]; }; r.hcg.hwb = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = e + n * (1 - e); return [t[0], (i - e) * 100, (1 - i) * 100]; }; r.hwb.hcg = function (t) { const e = t[1] / 100; const n = t[2] / 100; const i = 1 - n; const o = i - e; let r = 0; if (o < 1) { r = (i - o) / (1 - o); } return [t[0], o * 100, r * 100]; }; r.apple.rgb = function (t) { return [ (t[0] / 65535) * 255, (t[1] / 65535) * 255, (t[2] / 65535) * 255, ]; }; r.rgb.apple = function (t) { return [ (t[0] / 255) * 65535, (t[1] / 255) * 65535, (t[2] / 255) * 65535, ]; }; r.gray.rgb = function (t) { return [(t[0] / 100) * 255, (t[0] / 100) * 255, (t[0] / 100) * 255]; }; r.gray.hsl = function (t) { return [0, 0, t[0]]; }; r.gray.hsv = r.gray.hsl; r.gray.hwb = function (t) { return [0, 100, t[0]]; }; r.gray.cmyk = function (t) { return [0, 0, 0, t[0]]; }; r.gray.lab = function (t) { return [t[0], 0, 0]; }; r.gray.hex = function (t) { const e = Math.round((t[0] / 100) * 255) & 255; const n = (e << 16) + (e << 8) + e; const i = n.toString(16).toUpperCase(); return "000000".substring(i.length) + i; }; r.rgb.gray = function (t) { const e = (t[0] + t[1] + t[2]) / 3; return [(e / 255) * 100]; }; }, 734: (t, e, n) => { const i = n(5659); const o = n(8507); const r = {}; const s = Object.keys(i); function a(t) { const e = function (...e) { const n = e[0]; if (n === undefined || n === null) { return n; } if (n.length > 1) { e = n; } return t(e); }; if ("conversion" in t) { e.conversion = t.conversion; } return e; } function c(t) { const e = function (...e) { const n = e[0]; if (n === undefined || n === null) { return n; } if (n.length > 1) { e = n; } const i = t(e); if (typeof i === "object") { for (let t = i.length, e = 0; e < t; e++) { i[e] = Math.round(i[e]); } } return i; }; if ("conversion" in t) { e.conversion = t.conversion; } return e; } s.forEach((t) => { r[t] = {}; Object.defineProperty(r[t], "channels", { value: i[t].channels }); Object.defineProperty(r[t], "labels", { value: i[t].labels }); const e = o(t); const n = Object.keys(e); n.forEach((n) => { const i = e[n]; r[t][n] = c(i); r[t][n].raw = a(i); }); }); t.exports = r; }, 8507: (t, e, n) => { const i = n(5659); function o() { const t = {}; const e = Object.keys(i); for (let n = e.length, i = 0; i < n; i++) { t[e[i]] = { distance: -1, parent: null }; } return t; } function r(t) { const e = o(); const n = [t]; e[t].distance = 0; while (n.length) { const t = n.pop(); const o = Object.keys(i[t]); for (let i = o.length, r = 0; r < i; r++) { const i = o[r]; const s = e[i]; if (s.distance === -1) { s.distance = e[t].distance + 1; s.parent = t; n.unshift(i); } } } return e; } function s(t, e) { return function (n) { return e(t(n)); }; } function a(t, e) { const n = [e[t].parent, t]; let o = i[e[t].parent][t]; let r = e[t].parent; while (e[r].parent) { n.unshift(e[r].parent); o = s(i[e[r].parent][r], o); r = e[r].parent; } o.conversion = n; return o; } t.exports = function (t) { const e = r(t); const n = {}; const i = Object.keys(e); for (let t = i.length, o = 0; o < t; o++) { const t = i[o]; const r = e[t]; if (r.parent === null) { continue; } n[t] = a(t, e); } return n; }; }, 8156: (t) => { "use strict"; t.exports = { aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50], }; }, 2165: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css", ], names: [], mappings: "AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content code {\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\n\tpadding: .15em;\n\tborder-radius: 2px;\n}\n\n.ck.ck-editor__editable .ck-code_selected {\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9394: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css", ], names: [], mappings: "AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content blockquote {\n\t/* See #12 */\n\toverflow: hidden;\n\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\n\tpadding-right: 1.5em;\n\tpadding-left: 1.5em;\n\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tfont-style: italic;\n\tborder-left: solid 5px hsl(0, 0%, 80%);\n}\n\n.ck-content[dir="rtl"] blockquote {\n\tborder-left: 0;\n\tborder-right: solid 5px hsl(0, 0%, 80%);\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 8643: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}.ck.ck-clipboard-drop-target-line{pointer-events:none;position:absolute}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}.ck.ck-clipboard-drop-target-line{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);height:0;margin-top:-1px}.ck.ck-clipboard-drop-target-line:before{border-style:solid;content:"";height:0;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-width)*-.5);width:0}[dir=ltr] .ck.ck-clipboard-drop-target-line:before{border-color:transparent transparent transparent var(--ck-clipboard-drop-target-color);border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height);left:-1px}[dir=rtl] .ck.ck-clipboard-drop-target-line:before{border-color:transparent var(--ck-clipboard-drop-target-color) transparent transparent;border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0;right:-1px}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.css", ], names: [], mappings: "AASC,8DACC,cAAe,CAEf,mBAAoB,CADpB,iBAOD,CAJC,mEACC,iBAAkB,CAClB,OACD,CAWA,qJACC,YACD,CAIF,kCAEC,mBAAoB,CADpB,iBAED,CC9BA,MACC,yCAA0C,CAC1C,yCAA0C,CAC1C,6DACD,CAOE,mEAIC,gDAAiD,CADjD,sDAAuD,CAFvD,2DAA8D,CAI9D,gBAAiB,CAHjB,wDAqBD,CAfC,yEAWC,sFAAuF,CAEvF,kBAAmB,CADnB,qKAA0K,CAX1K,UAAW,CAIX,aAAc,CAFd,QAAS,CAIT,QAAS,CADT,iBAAkB,CAElB,wDAA2D,CAE3D,0BAA2B,CAR3B,OAYD,CAOF,kEACC,gGACD,CAKA,gDACC,OAAS,CACT,sBACD,CAGD,kCAGC,gDAAiD,CADjD,sDAAuD,CADvD,QAAS,CAGT,eAwBD,CAtBC,yCAMC,kBAAmB,CALnB,UAAW,CAIX,QAAS,CAHT,iBAAkB,CAClB,uDAA0D,CAC1D,OAiBD,CArBA,mDAYE,sFAAuF,CADvF,+JAAoK,CAFpK,SAYF,CArBA,mDAmBE,sFAAuF,CADvF,+JAAmK,CAFnK,UAKF", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\tdisplay: inline;\n\t\tposition: relative;\n\t\tpointer-events: none;\n\n\t\t& span {\n\t\t\tposition: absolute;\n\t\t\twidth: 0;\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\t& > .ck-widget__selection-handle {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t& > .ck-widget__type-around {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\tposition: absolute;\n\tpointer-events: none;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import \"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\";\n\n:root {\n\t--ck-clipboard-drop-target-dot-width: 12px;\n\t--ck-clipboard-drop-target-dot-height: 8px;\n\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border);\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\t& span {\n\t\t\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\t\t\tbackground: var(--ck-clipboard-drop-target-color);\n\t\t\tmargin-left: -1px;\n\n\t\t\t/* The triangle above the marker */\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 50%;\n\t\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\n\t\t\t\tborder-width: calc(var(--ck-clipboard-drop-target-dot-height)) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width));\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget that it a drop target.\n\t */\n\t& .ck-widget.ck-clipboard-drop-target-range {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\tzoom: 0.6;\n\t\toutline: none !important;\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\theight: 0;\n\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\tbackground: var(--ck-clipboard-drop-target-color);\n\tmargin-top: -1px;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-width));\n\t\twidth: 0;\n\t\theight: 0;\n\t\tborder-style: solid;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tleft: -1px;\n\n\t\t\tborder-width: calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height);\n\t\t\tborder-color: transparent transparent transparent var(--ck-clipboard-drop-target-color);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tright: -1px;\n\n\t\t\tborder-width:calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0;\n\t\t\tborder-color: transparent var(--ck-clipboard-drop-target-color) transparent transparent;\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3394: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-panel)}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content{border:solid var(--ck-color-base-border);border-width:1px 1px 0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content.ck-sticky-panel__content_sticky{border-bottom-width:1px}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content .ck-menu-bar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content .ck-toolbar{border:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-editor-classic/theme/classiceditor.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-editor-classic/classiceditor.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAKA,cAIC,iBAMD,CAJC,2DAEC,yBACD,CCLC,8DCED,eDeC,CAjBA,mKCMA,qCAAsC,CDJpC,2BAA4B,CAC5B,4BAcF,CAjBA,8DAOC,wCAAsB,CAAtB,sBAUD,CARC,8FACC,uBACD,CAEA,qJAEC,QACD,CAMH,yCAEC,0CAA2C,CCtB3C,eDgCD,CAZA,yHChBE,qCAAsC,CDqBtC,wBAAyB,CACzB,yBAMF,CAHC,0DACC,wCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor {\n\t/* All the elements within `.ck-editor` are positioned relatively to it.\n\t If any element needs to be positioned with respect to the , etc.,\n\t it must land outside of the `.ck-editor` in DOM. */\n\tposition: relative;\n\n\t& .ck-editor__top .ck-sticky-panel .ck-toolbar {\n\t\t/* https://github.com/ckeditor/ckeditor5-editor-classic/issues/62 */\n\t\tz-index: var(--ck-z-panel);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_rounded.css";\n\n.ck.ck-editor__top {\n\t& .ck-sticky-panel {\n\t\t& .ck-sticky-panel__content {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\n\t\t\tborder: 1px solid var(--ck-color-base-border);\n\t\t\tborder-bottom-width: 0;\n\n\t\t\t&.ck-sticky-panel__content_sticky {\n\t\t\t\tborder-bottom-width: 1px;\n\t\t\t}\n\n\t\t\t& .ck-menu-bar,\n\t\t\t& .ck-toolbar {\n\t\t\t\tborder: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* Note: Use ck-editor__main to make sure these styles don\'t apply to other editor types */\n.ck.ck-editor__main > .ck-editor__editable {\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/113 */\n\tbackground: var(--ck-color-base-background);\n\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&:not(.ck-focused) {\n\t\tborder-color: var(--ck-color-base-border);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1920: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}@media (forced-colors:active){.ck .ck-placeholder,.ck.ck-placeholder{forced-color-adjust:preserve-parent-color}}.ck .ck-placeholder:before,.ck.ck-placeholder:before{cursor:text}@media (forced-colors:none){.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text)}}@media (forced-colors:active){.ck .ck-placeholder:before,.ck.ck-placeholder:before{font-style:italic;margin-left:1px}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css", ], names: [], mappings: "AAMA,uCAEC,iBAWD,CATC,qDAIC,8BAA+B,CAF/B,MAAO,CAKP,mBAAoB,CANpB,iBAAkB,CAElB,OAKD,CAKA,wCACC,YACD,CAQD,iCACC,iBACD,CC7BC,8BACC,uCCOA,yCDLA,CACD,CCOA,qDACC,WAmBD,CDvBA,4BACC,qDCMC,6CDJD,CACD,CAZA,8BACC,qDCsBC,iBAAkB,CAMlB,eD1BD,CACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder,\n.ck .ck-placeholder {\n\tposition: relative;\n\n\t&::before {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tcontent: attr(data-placeholder);\n\n\t\t/* See ckeditor/ckeditor5#469. */\n\t\tpointer-events: none;\n\t}\n}\n\n/* See ckeditor/ckeditor5#1987. */\n.ck.ck-read-only .ck-placeholder {\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n\n/*\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\n */\n.ck.ck-reset_all .ck-placeholder {\n\tposition: relative;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder, .ck .ck-placeholder {\n\t@mixin ck-media-forced-colors {\n\t\t/*\n\t\t * This is needed for Edge on Windows to use the right color for the placeholder content (::before).\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t */\n\t\tforced-color-adjust: preserve-parent-color;\n\t}\n\n\t&::before {\n\t\tcursor: text;\n\n\t\t@mixin ck-media-default-colors {\n\t\t\tcolor: var(--ck-color-engine-placeholder-text);\n\t\t}\n\n\t\t@mixin ck-media-forced-colors {\n\t\t\t/*\n\t\t\t * In the high contrast mode there is no telling between regular and placeholder text. Using\n\t\t\t * italic text to address that issue. See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t\t */\n\t\t\tfont-style: italic;\n\n\t\t\t/*\n\t\t\t * Without this margin, the caret will not show up and blink when the user puts the selection\n\t\t\t * in the placeholder (Edge on Windows). See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t\t */\n\t\t\tmargin-left: 1px;\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 7526: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/renderer.css", ], names: [], mappings: "AAMA,qDACC,YACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\n\tdisplay: none;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1959: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-find-result{background:var(--ck-color-highlight-background);color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-find-and-replace/theme/findandreplace.css", ], names: [], mappings: "AAKA,gBACC,+CAAgD,CAChD,0BACD,CAEA,yBACC,kBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-find-result {\n\tbackground: var(--ck-color-highlight-background);\n\tcolor: var(--ck-color-text);\n}\n\n.ck-find-result_selected {\n\tbackground: hsl(29, 100%, 60%);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9865: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-find-and-replace-form{max-width:100%;& .ck-find-and-replace-form__inputs,.ck-find-and-replace-form__actions{display:flex}& .ck-find-and-replace-form__inputs.ck-find-and-replace-form__inputs .ck-results-counter,.ck-find-and-replace-form__actions.ck-find-and-replace-form__inputs .ck-results-counter{position:absolute}}.ck.ck-find-and-replace-form{width:400px}.ck.ck-find-and-replace-form:focus{outline:none}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs{align-content:stretch;align-items:center;flex:1 1 auto;flex-direction:row;flex-wrap:wrap;margin:0;padding:var(--ck-spacing-large)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button{flex:0 0 auto}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>*+*,[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>*+*{margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>*+*,[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>*+*{margin-right:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions .ck-labeled-field-view,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-labeled-field-view{flex:1 1 auto}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions .ck-labeled-field-view .ck-input,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-labeled-field-view .ck-input{min-width:50px;width:100%}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs{align-items:flex-start}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button-prev>.ck-icon{transform:rotate(90deg)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button-next>.ck-icon{transform:rotate(-90deg)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{left:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{color:var(--ck-color-base-border)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{flex:0 0 100%;padding-top:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{margin-right:0}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions{flex-wrap:wrap;justify-content:flex-end;margin-top:calc(var(--ck-spacing-large)*-1)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button-find{font-weight:700}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button-find .ck-button__label{padding-left:var(--ck-spacing-large);padding-right:var(--ck-spacing-large)}.ck.ck-find-and-replace-form .ck-switchbutton{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;width:100%}@media screen and (max-width:600px){.ck.ck-find-and-replace-form{max-width:100%;width:300px}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input{flex-wrap:wrap}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input .ck-labeled-field-view{flex:1 0 auto;margin-bottom:var(--ck-spacing-standard);width:100%}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button{text-align:center}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type .ck-button__label{text-align:center;width:100%}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view){flex:1 1 auto;flex-wrap:wrap}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button{text-align:center}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button .ck-button__label{text-align:center;width:100%}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-find-and-replace/theme/findandreplaceform.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-find-and-replace/findandreplaceform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAKA,6BACC,cAAe,CAEf,uEACC,YAMD,CAHC,iLACC,iBACD,CAEF,CCRA,6BACC,WAoHD,CA9GC,mCACC,YACD,CAGA,+HAMC,qBAAsB,CADtB,kBAAmB,CAHnB,aAAc,CACd,kBAAmB,CACnB,cAAe,CAKf,QAAS,CADT,+BA4BD,CAzBC,qJACC,aACD,CAGC,2JACC,sCACD,CAIA,2JACC,uCACD,CAGD,6KACC,aAMD,CAJC,iMAEC,cAAe,CADf,UAED,CAMF,+DAEC,sBAqCD,CAnCC,wFACC,uBACD,CAEA,wFACC,wBACD,CAEA,mFACC,OAAQ,CACR,0BAWD,CAbA,6FAKE,gCAQF,CAbA,6FASE,+BAIF,CAbA,mFAYC,iCACD,CAEA,yFACC,aAAc,CACd,sCASD,CAXA,mGAKE,aAMF,CAXA,mGASE,cAEF,CAID,gEACC,cAAe,CACf,wBAAyB,CACzB,2CAWD,CATC,gFACC,eAOD,CAJC,kGACC,oCAAqC,CACrC,qCACD,CAIF,8CAMC,kBAAmB,CAJnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAJ9B,UAMD,CCtHA,oCD0HA,6BAIC,cAAe,CAHf,WA+DD,CAzDC,6DACC,cA4BD,CA1BC,oFACC,aAAc,CAEd,wCAAyC,CADzC,UAED,CAEA,wEACC,iBAkBD,CAhBC,sFACC,aAcD,CAfA,gGAIE,aAWF,CAfA,gGAQE,cAOF,CAJC,wGAEC,iBAAkB,CADlB,UAED,CAMH,4FAEC,aAAc,CADd,cAuBD,CApBC,uGACC,iBAkBD,CAhBC,qHACC,aASD,CAVA,+HAIE,aAMF,CAVA,+HAQE,cAEF,CAEA,yHAEC,iBAAkB,CADlB,UAED,CCrLH", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-find-and-replace-form {\n\tmax-width: 100%;\n\n\t& .ck-find-and-replace-form__inputs, .ck-find-and-replace-form__actions {\n\t\tdisplay: flex;\n\n\t\t/* The inputs area styles */\n\t\t&.ck-find-and-replace-form__inputs .ck-results-counter {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-find-and-replace-form {\n\twidth: 400px;\n\n\t/*\n\t * The
needs tabindex="-1" for proper Esc handling after being clicked\n\t * but the side effect is that this creates a nasty focus outline in some browsers.\n\t */\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t/* Generic styles for the form inputs and actions. */\n\t& .ck-find-and-replace-form__inputs,\n\t& .ck-find-and-replace-form__actions {\n\t\tflex: 1 1 auto;\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t\talign-items: center;\n\t\talign-content: stretch;\n\n\t\tpadding: var(--ck-spacing-large);\n\t\tmargin: 0;\n\n\t\t& > .ck-button {\n\t\t\tflex: 0 0 auto;\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\t& > * + * {\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t& > * + * {\n\t\t\t\tmargin-right: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex: 1 1 auto;\n\n\t\t\t& .ck-input {\n\t\t\t\twidth: 100%;\n\t\t\t\tmin-width: 50px;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/* Styles specific for inputs area. */\n\t& .ck-find-and-replace-form__inputs {\n\t\t/* To display all controls in line when there\'s an error under the input */\n\t\talign-items: flex-start;\n\n\t\t& > .ck-button-prev > .ck-icon {\n\t\t\ttransform: rotate(90deg);\n\t\t}\n\n\t\t& > .ck-button-next > .ck-icon {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\n\t\t& .ck-results-counter {\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tright: var(--ck-spacing-standard);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tleft: var(--ck-spacing-standard);\n\t\t\t}\n\n\t\t\tcolor: var(--ck-color-base-border);\n\t\t}\n\n\t\t& > .ck-labeled-field-replace {\n\t\t\tflex: 0 0 100%;\n\t\t\tpadding-top: var(--ck-spacing-standard);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Styles specific for actions area. */\n\t& .ck-find-and-replace-form__actions {\n\t\tflex-wrap: wrap;\n\t\tjustify-content: flex-end;\n\t\tmargin-top: calc( -1 * var(--ck-spacing-large) );\n\n\t\t& > .ck-button-find {\n\t\t\tfont-weight: bold;\n\n\t\t\t/* Beef the find button up a little. It\'s the main action button in the form */\n\t\t\t& .ck-button__label {\n\t\t\t\tpadding-left: var(--ck-spacing-large);\n\t\t\t\tpadding-right: var(--ck-spacing-large);\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck-switchbutton {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tflex-wrap: nowrap;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t}\n}\n\n@mixin ck-media-phone {\n\t.ck.ck-find-and-replace-form {\n\t\twidth: 300px;\n\n\t\t/* Don\'t let the form overflow from the dialog (https://github.com/cksource/ckeditor5-commercial/issues/5913) */\n\t\tmax-width: 100%;\n\n\t\t/* Styles specific for inputs area. */\n\t\t&.ck-find-and-replace-form__input {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tflex: 1 0 auto;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-bottom: var(--ck-spacing-standard);\n\t\t\t}\n\n\t\t\t& > .ck-button {\n\t\t\t\ttext-align: center;\n\n\t\t\t\t&:first-of-type {\n\t\t\t\t\tflex: 1 1 auto;\n\n\t\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\t\tmargin-right: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t& .ck-button__label {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Styles specific for actions area. */\n\t\t&.ck-find-and-replace-form__actions > :not(.ck-labeled-field-view) {\n\t\t\tflex-wrap: wrap;\n\t\t\tflex: 1 1 auto;\n\n\t\t\t& > .ck-button {\n\t\t\t\ttext-align: center;\n\n\t\t\t\t&:first-of-type {\n\t\t\t\t\tflex: 1 1 auto;\n\n\t\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\t\tmargin-right: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t& .ck-button__label {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7724: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content .text-tiny{font-size:.7em}.ck-content .text-small{font-size:.85em}.ck-content .text-big{font-size:1.4em}.ck-content .text-huge{font-size:1.8em}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-font/theme/fontsize.css", ], names: [], mappings: "AAUC,uBACC,cACD,CAEA,wBACC,eACD,CAEA,sBACC,eACD,CAEA,uBACC,eACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* The values should be synchronized with the "FONT_SIZE_PRESET_UNITS" object in the "/src/fontsize/utils.js" file. */\n\n/* Styles should be prefixed with the `.ck-content` class.\nSee https://github.com/ckeditor/ckeditor5/issues/6636 */\n.ck-content {\n\t& .text-tiny {\n\t\tfont-size: .7em;\n\t}\n\n\t& .text-small {\n\t\tfont-size: .85em;\n\t}\n\n\t& .text-big {\n\t\tfont-size: 1.4em;\n\t}\n\n\t& .text-huge {\n\t\tfont-size: 1.8em;\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 8547: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-highlight-marker-yellow:#fdfd77;--ck-highlight-marker-green:#62f962;--ck-highlight-marker-pink:#fc7899;--ck-highlight-marker-blue:#72ccfd;--ck-highlight-pen-red:#e71313;--ck-highlight-pen-green:#128a00}.ck-content .marker-yellow{background-color:var(--ck-highlight-marker-yellow)}.ck-content .marker-green{background-color:var(--ck-highlight-marker-green)}.ck-content .marker-pink{background-color:var(--ck-highlight-marker-pink)}.ck-content .marker-blue{background-color:var(--ck-highlight-marker-blue)}.ck-content .pen-red{background-color:transparent;color:var(--ck-highlight-pen-red)}.ck-content .pen-green{background-color:transparent;color:var(--ck-highlight-pen-green)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css", ], names: [], mappings: "AAKA,MACC,oCAA+C,CAC/C,mCAA+C,CAC/C,kCAA8C,CAC9C,kCAA8C,CAC9C,8BAAwC,CACxC,gCACD,CAGC,2BACC,kDACD,CAFA,0BACC,iDACD,CAFA,yBACC,gDACD,CAFA,yBACC,gDACD,CAIA,qBAIC,4BAA6B,CAH7B,iCAID,CALA,uBAIC,4BAA6B,CAH7B,mCAID", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-highlight-marker-yellow: hsl(60, 97%, 73%);\n\t--ck-highlight-marker-green: hsl(120, 93%, 68%);\n\t--ck-highlight-marker-pink: hsl(345, 96%, 73%);\n\t--ck-highlight-marker-blue: hsl(201, 97%, 72%);\n\t--ck-highlight-pen-red: hsl(0, 85%, 49%);\n\t--ck-highlight-pen-green: hsl(112, 100%, 27%);\n}\n\n@define-mixin highlight-marker-color $color {\n\t.ck-content .marker-$color {\n\t\tbackground-color: var(--ck-highlight-marker-$color);\n\t}\n}\n\n@define-mixin highlight-pen-color $color {\n\t.ck-content .pen-$color {\n\t\tcolor: var(--ck-highlight-pen-$color);\n\n\t\t/* Override default yellow background of `` from user agent stylesheet */\n\t\tbackground-color: transparent;\n\t}\n}\n\n@mixin highlight-marker-color yellow;\n@mixin highlight-marker-color green;\n@mixin highlight-marker-color pink;\n@mixin highlight-marker-color blue;\n\n@mixin highlight-pen-color red;\n@mixin highlight-pen-color green;\n", ], sourceRoot: "", }, ]); const c = a; }, 7528: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-editor__editable .ck-horizontal-line{display:flow-root}.ck-content hr{background:#dedede;border:0;height:4px;margin:15px 0}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-horizontal-line/theme/horizontalline.css", ], names: [], mappings: "AAMA,yCAEC,iBACD,CAEA,eAGC,kBAA2B,CAC3B,QAAS,CAFT,UAAW,CADX,aAID", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n\n.ck-editor__editable .ck-horizontal-line {\n\t/* Necessary to render properly next to floated objects, e.g. side image case. */\n\tdisplay: flow-root;\n}\n\n.ck-content hr {\n\tmargin: 15px 0;\n\theight: 4px;\n\tbackground: hsl(0, 0%, 87%);\n\tborder: 0;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8912: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-widget.raw-html-embed{display:flow-root;font-style:normal;margin:.9em auto;min-width:15em;position:relative}.ck-widget.raw-html-embed:before{position:absolute;z-index:1}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper{display:flex;flex-direction:column;position:absolute}.ck-widget.raw-html-embed .raw-html-embed__preview{display:flex;overflow:hidden;position:relative}.ck-widget.raw-html-embed .raw-html-embed__preview-content{border-collapse:separate;border-spacing:7px;display:table;margin:auto;position:relative;width:100%}.ck-widget.raw-html-embed .raw-html-embed__preview-placeholder{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}:root{--ck-html-embed-content-width:calc(100% - var(--ck-icon-size)*1.5);--ck-html-embed-source-height:10em;--ck-html-embed-unfocused-outline-width:1px;--ck-html-embed-content-min-height:calc(var(--ck-icon-size) + var(--ck-spacing-standard));--ck-html-embed-source-disabled-background:var(--ck-color-base-foreground);--ck-html-embed-source-disabled-color:#737373}.ck-widget.raw-html-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base)}.ck-widget.raw-html-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.raw-html-embed[dir=ltr]{text-align:left}.ck-widget.raw-html-embed[dir=rtl]{text-align:right}.ck-widget.raw-html-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);top:calc(var(--ck-html-embed-unfocused-outline-width)*-1);transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.raw-html-embed[dir=rtl]:before{left:auto;right:var(--ck-spacing-standard)}.ck-widget.raw-html-embed[dir=ltr] .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck.ck-editor__editable.ck-blurred .ck-widget.raw-html-embed.ck-widget_selected:before{padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck.ck-editor__editable:not(.ck-blurred) .ck-widget.raw-html-embed.ck-widget_selected:before{background:var(--ck-color-focus-border);padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck.ck-editor__editable .ck-widget.raw-html-embed:not(.ck-widget_selected):hover:before{padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck-widget.raw-html-embed .raw-html-embed__content-wrapper{padding:var(--ck-spacing-standard)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper{right:var(--ck-spacing-standard);top:var(--ck-spacing-standard)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button.raw-html-embed__save-button{color:var(--ck-color-button-save)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button.raw-html-embed__cancel-button{color:var(--ck-color-button-cancel)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button:not(:first-child){margin-top:var(--ck-spacing-small)}.ck-widget.raw-html-embed[dir=rtl] .raw-html-embed__buttons-wrapper{left:var(--ck-spacing-standard);right:auto}.ck-widget.raw-html-embed .raw-html-embed__source{box-sizing:border-box;direction:ltr;font-family:monospace;font-size:var(--ck-font-size-base);height:var(--ck-html-embed-source-height);min-width:0;padding:var(--ck-spacing-standard);resize:none;tab-size:4;text-align:left;white-space:pre-wrap;width:var(--ck-html-embed-content-width)}.ck-widget.raw-html-embed .raw-html-embed__source[disabled]{-webkit-text-fill-color:var(--ck-html-embed-source-disabled-color);background:var(--ck-html-embed-source-disabled-background);color:var(--ck-html-embed-source-disabled-color);opacity:1}.ck-widget.raw-html-embed .raw-html-embed__preview{min-height:var(--ck-html-embed-content-min-height);width:var(--ck-html-embed-content-width)}.ck-editor__editable:not(.ck-read-only) .ck-widget.raw-html-embed .raw-html-embed__preview{pointer-events:none}.ck-widget.raw-html-embed .raw-html-embed__preview-content{background-color:var(--ck-color-base-foreground);box-sizing:border-box}.ck-widget.raw-html-embed .raw-html-embed__preview-content>*{margin-left:auto;margin-right:auto}.ck-widget.raw-html-embed .raw-html-embed__preview-placeholder{color:var(--ck-html-embed-source-disabled-color)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-html-embed/theme/htmlembed.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-html-embed/htmlembed.css", ], names: [], mappings: "AAMA,0BAMC,iBAAkB,CAOlB,iBAAkB,CATlB,gBAAkB,CAMlB,cAAe,CALf,iBAwDD,CA5CC,iCACC,iBAAkB,CAGlB,SACD,CAKA,2DAEC,YAAa,CACb,qBAAsB,CAFtB,iBAGD,CAEA,mDAGC,YAAa,CADb,eAAgB,CADhB,iBAGD,CAEA,2DAOC,wBAAyB,CACzB,kBAAmB,CAFnB,aAAc,CAHd,WAAY,CADZ,iBAAkB,CADlB,UAQD,CAEA,+DAQC,kBAAmB,CAHnB,QAAS,CAET,YAAa,CAEb,sBAAuB,CAPvB,MAAO,CADP,iBAAkB,CAGlB,OAAQ,CADR,KAOD,CC7DD,MACC,kEAAqE,CACrE,kCAAmC,CACnC,2CAA4C,CAC5C,yFAA0F,CAE1F,0EAA2E,CAC3E,6CACD,CAGA,0BAEC,gDAAiD,CADjD,kCA0ID,CAvIC,+DACC,iGACD,CAGA,mCACC,eACD,CAEA,mCACC,gBACD,CAIA,iCAIC,eAA4B,CAG5B,iEAAkE,CAClE,qCAAsC,CAPtC,mCAAoC,CASpC,+BAAgC,CADhC,kCAAmC,CANnC,+BAAgC,CAGhC,kIAAmI,CAJnI,yDAA4D,CAG5D,0GAMD,CAEA,0CACC,SAAU,CACV,gCACD,CAGA,iIACC,gBACD,CAxCD,uFA4CE,sDAAuD,CADvD,KAgGF,CA3IA,6FAkDE,uCAAwC,CADxC,sDAAuD,CADvD,KA2FF,CA3IA,wFAuDE,sDAAuD,CADvD,KAqFF,CA/EC,2DACC,kCACD,CAGA,2DAEC,gCAAiC,CADjC,8BAcD,CAXC,kGACC,iCACD,CAEA,oGACC,mCACD,CAEA,wFACC,kCACD,CAGD,oEACC,+BAAgC,CAChC,UACD,CAGA,kDACC,qBAAsB,CActB,aAAc,CAPd,qBAAsB,CAGtB,kCAAmC,CATnC,yCAA0C,CAG1C,WAAY,CACZ,kCAAmC,CAFnC,WAAY,CAKZ,UAAW,CAKX,eAAgB,CAJhB,oBAAqB,CAPrB,wCAsBD,CARC,4DAKC,kEAAmE,CAJnE,0DAA2D,CAC3D,gDAAiD,CAIjD,SACD,CAID,mDACC,kDAAmD,CACnD,wCAMD,CARA,2FAME,mBAEF,CAEA,2DAEC,gDAAiD,CADjD,qBAOD,CAJC,6DACC,gBAAiB,CACjB,iBACD,CAGD,+DACC,gDACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* The feature container. */\n.ck-widget.raw-html-embed {\n\t/* Give the embed some air. */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em auto;\n\tposition: relative;\n\tdisplay: flow-root;\n\n\t/* Give the html embed some minimal width in the content to prevent them\n\tfrom being "squashed" in tight spaces, e.g. in table cells (https://github.com/ckeditor/ckeditor5/issues/8331) */\n\tmin-width: 15em;\n\n\t/* Don\'t inherit the style, e.g. when in a block quote. */\n\tfont-style: normal;\n\n\t/* ----- Emebed label in the upper left corner ----------------------------------------------- */\n\n\t&::before {\n\t\tposition: absolute;\n\n\t\t/* Make sure the content does not cover the label. */\n\t\tz-index: 1;\n\t}\n\n\t/* ----- Emebed internals --------------------------------------------------------------------- */\n\n\t/* The switch mode button wrapper. */\n\t& .raw-html-embed__buttons-wrapper {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t& .raw-html-embed__preview {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t}\n\n\t& .raw-html-embed__preview-content {\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tmargin: auto;\n\n\t\t/* Gives spacing to the small renderable elements, so they always cover the placeholder. */\n\t\tdisplay: table;\n\t\tborder-collapse: separate;\n\t\tborder-spacing: 7px;\n\t}\n\n\t& .raw-html-embed__preview-placeholder {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-html-embed-content-width: calc(100% - 1.5 * var(--ck-icon-size));\n\t--ck-html-embed-source-height: 10em;\n\t--ck-html-embed-unfocused-outline-width: 1px;\n\t--ck-html-embed-content-min-height: calc(var(--ck-icon-size) + var(--ck-spacing-standard));\n\n\t--ck-html-embed-source-disabled-background: var(--ck-color-base-foreground);\n\t--ck-html-embed-source-disabled-color: hsl(0deg 0% 45%);\n}\n\n/* The feature container. */\n.ck-widget.raw-html-embed {\n\tfont-size: var(--ck-font-size-base);\n\tbackground-color: var(--ck-color-base-foreground);\n\n\t&:not(.ck-widget_selected):not(:hover) {\n\t\toutline: var(--ck-html-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border);\n\t}\n\n\t/* HTML embed widget itself should respect UI language direction */\n\t&[dir="ltr"] {\n\t\ttext-align: left;\n\t}\n\n\t&[dir="rtl"] {\n\t\ttext-align: right;\n\t}\n\n\t/* ----- Embed label in the upper left corner ----------------------------------------------- */\n\n\t&::before {\n\t\tcontent: attr(data-html-embed-label);\n\t\ttop: calc(-1 * var(--ck-html-embed-unfocused-outline-width));\n\t\tleft: var(--ck-spacing-standard);\n\t\tbackground: hsl(0deg 0% 60%);\n\t\ttransition: background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\t\tpadding: calc(var(--ck-spacing-tiny) + var(--ck-html-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);\n\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\n\t\tcolor: var(--ck-color-base-background);\n\t\tfont-size: var(--ck-font-size-tiny);\n\t\tfont-family: var(--ck-font-face);\n\t}\n\n\t&[dir="rtl"]::before {\n\t\tleft: auto;\n\t\tright: var(--ck-spacing-standard);\n\t}\n\n\t/* Make space for label but it only collides in LTR languages */\n\t&[dir="ltr"] .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before {\n\t\tmargin-left: 50px;\n\t}\n\n\t@nest .ck.ck-editor__editable.ck-blurred &.ck-widget_selected::before {\n\t\ttop: 0px;\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\n\t}\n\n\t@nest .ck.ck-editor__editable:not(.ck-blurred) &.ck-widget_selected::before {\n\t\ttop: 0;\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\n\t\tbackground: var(--ck-color-focus-border);\n\t}\n\n\t@nest .ck.ck-editor__editable &:not(.ck-widget_selected):hover::before {\n\t\ttop: 0px;\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\n\t}\n\n\t/* ----- Emebed internals --------------------------------------------------------------------- */\n\n\t& .raw-html-embed__content-wrapper {\n\t\tpadding: var(--ck-spacing-standard);\n\t}\n\n\t/* The switch mode button wrapper. */\n\t& .raw-html-embed__buttons-wrapper {\n\t\ttop: var(--ck-spacing-standard);\n\t\tright: var(--ck-spacing-standard);\n\n\t\t& .ck-button.raw-html-embed__save-button {\n\t\t\tcolor: var(--ck-color-button-save);\n\t\t}\n\n\t\t& .ck-button.raw-html-embed__cancel-button {\n\t\t\tcolor: var(--ck-color-button-cancel);\n\t\t}\n\n\t\t& .ck-button:not(:first-child) {\n\t\t\tmargin-top: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t&[dir="rtl"] .raw-html-embed__buttons-wrapper {\n\t\tleft: var(--ck-spacing-standard);\n\t\tright: auto;\n\t}\n\n\t/* The edit source element. */\n\t& .raw-html-embed__source {\n\t\tbox-sizing: border-box;\n\t\theight: var(--ck-html-embed-source-height);\n\t\twidth: var(--ck-html-embed-content-width);\n\t\tresize: none;\n\t\tmin-width: 0;\n\t\tpadding: var(--ck-spacing-standard);\n\n\t\tfont-family: monospace;\n\t\ttab-size: 4;\n\t\twhite-space: pre-wrap;\n\t\tfont-size: var(--ck-font-size-base); /* Safari needs this. */\n\n\t\t/* HTML code is direction–agnostic. */\n\t\ttext-align: left;\n\t\tdirection: ltr;\n\n\t\t&[disabled] {\n\t\t\tbackground: var(--ck-html-embed-source-disabled-background);\n\t\t\tcolor: var(--ck-html-embed-source-disabled-color);\n\n\t\t\t/* Safari needs this for the proper text color in disabled input (https://github.com/ckeditor/ckeditor5/issues/8320). */\n\t\t\t-webkit-text-fill-color: var(--ck-html-embed-source-disabled-color);\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t/* The preview data container. */\n\t& .raw-html-embed__preview {\n\t\tmin-height: var(--ck-html-embed-content-min-height);\n\t\twidth: var(--ck-html-embed-content-width);\n\n\t\t/* Disable all mouse interaction as long as the editor is not read–only. */\n\t\t@nest .ck-editor__editable:not(.ck-read-only) & {\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\t& .raw-html-embed__preview-content {\n\t\tbox-sizing: border-box;\n\t\tbackground-color: var(--ck-color-base-foreground);\n\n\t\t& > * {\n\t\t\tmargin-left: auto;\n\t\t\tmargin-right: auto;\n\t\t}\n\t}\n\n\t& .raw-html-embed__preview-placeholder {\n\t\tcolor: var(--ck-html-embed-source-disabled-color)\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 9064: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-html-support/theme/datafilter.css", ], names: [], mappings: "AAKA,MACC,kDACD,CAEA,6BAEC,gDAAiD,CADjD,kCAAmC,CAKnC,iDAAkD,CAHlD,+BAAgC,CAEhC,oEAgCD,CA7BC,kEACC,wGACD,CAEA,oCAOC,eAA4B,CAG5B,iEAAkE,CAClE,qCAAsC,CAPtC,0CAA2C,CAS3C,+BAAgC,CADhC,kCAAmC,CAVnC,iBAAkB,CADlB,eAAmB,CAKnB,+BAAgC,CAGhC,yIAA0I,CAN1I,iBAAkB,CAElB,KAAM,CAGN,0GAMD,CAGA,2HACC,gBACD,CAEA,yDAEC,mBACD,CAGD,gCACC,eACD,CAEA,iCACC,oBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-html-object-embed-unfocused-outline-width: 1px;\n}\n\n.ck-widget.html-object-embed {\n\tfont-size: var(--ck-font-size-base);\n\tbackground-color: var(--ck-color-base-foreground);\n\tpadding: var(--ck-spacing-small);\n\t/* Leave space for label */\n\tpadding-top: calc(var(--ck-font-size-tiny) + var(--ck-spacing-large));\n\tmin-width: calc(76px + var(--ck-spacing-standard));\n\n\t&:not(.ck-widget_selected):not(:hover) {\n\t\toutline: var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border);\n\t}\n\n\t&::before {\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tposition: absolute;\n\t\tcontent: attr(data-html-object-embed-label);\n\t\ttop: 0;\n\t\tleft: var(--ck-spacing-standard);\n\t\tbackground: hsl(0deg 0% 60%);\n\t\ttransition: background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\t\tpadding: calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);\n\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\n\t\tcolor: var(--ck-color-base-background);\n\t\tfont-size: var(--ck-font-size-tiny);\n\t\tfont-family: var(--ck-font-face);\n\t}\n\n\t/* Make space for label. */\n\t& .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before {\n\t\tmargin-left: 50px;\n\t}\n\n\t& .html-object-embed__content {\n\t\t/* Disable user interaction with embed content */\n\t\tpointer-events: none;\n\t}\n}\n\ndiv.ck-widget.html-object-embed {\n\tmargin: 1em auto;\n}\n\nspan.ck-widget.html-object-embed {\n\tdisplay: inline-block;\n}\n\n", ], sourceRoot: "", }, ]); const c = a; }, 2051: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;height:auto;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image{z-index:1}.ck.ck-editor__editable .image.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable .image-inline img{height:auto}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/image.css", ], names: [], mappings: "AAMC,mBAEC,UAAW,CADX,aAAc,CAOd,gBAAkB,CAGlB,cAAe,CARf,iBA2BD,CAjBC,uBAEC,aAAc,CAad,WAAY,CAVZ,aAAc,CAGd,cAAe,CAGf,cAKD,CAGD,0BAYC,sBAAuB,CANvB,mBAAoB,CAGpB,cAoBD,CAdC,kCACC,YACD,CAGA,gEAGC,WAAY,CACZ,aAAc,CAGd,cACD,CAUD,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAKA,+BACC,SASD,CAHC,kDACC,SACD,CAMD,sCACC,SAkBD,CAZC,yDACC,SAUD,CAHC,qEACC,YACD,CAMF,0CACC,WACD,CAMC,0FACC,cACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content {\n\t& .image {\n\t\tdisplay: table;\n\t\tclear: both;\n\t\ttext-align: center;\n\n\t\t/* Make sure there is some space between the content and the image. Center image by default. */\n\t\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\t \tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\t\tmargin: 0.9em auto;\n\n\t\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\n\t\tmin-width: 50px;\n\n\t\t& img {\n\t\t\t/* Prevent unnecessary margins caused by line-height (see #44). */\n\t\t\tdisplay: block;\n\n\t\t\t/* Center the image if its width is smaller than the content\'s width. */\n\t\t\tmargin: 0 auto;\n\n\t\t\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\n\t\t\tmax-width: 100%;\n\n\t\t\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\n\t\t\tmin-width: 100%;\n\n\t\t\t/* Keep proportions of the block image if the height is set and the image is wider than the editor width.\n\t\t\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\n\t\t\theight: auto;\n\t\t}\n\t}\n\n\t& .image-inline {\n\t\t/*\n\t\t * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).\n\t\t * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.\n\t\t * This strange behavior does not happen with inline-flex.\n\t\t */\n\t\tdisplay: inline-flex;\n\n\t\t/* While being resized, don\'t allow the image to exceed the width of the editing root. */\n\t\tmax-width: 100%;\n\n\t\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\n\t\talign-items: flex-start;\n\n\t\t/* When the picture is present it must act as a flex container to let the img resize properly */\n\t\t& picture {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t/* When the picture is present, it must act like a resizable img. */\n\t\t& picture,\n\t\t& img {\n\t\t\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\n\t\t\tflex-grow: 1;\n\t\t\tflex-shrink: 1;\n\n\t\t\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Inhertit the content styles padding of the
in case the integration overrides `text-align: center`\n\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\n\t * caret does, and not at the edge of
.\n\t */\n\t& .image > figcaption.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the image caption placeholder doesn\'t overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t/*\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\n\t */\n\t& .image {\n\t\tz-index: 1;\n\n\t\t/*\n\t\t * Make sure the selected image always stays on top of its siblings.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\n\t\t */\n\t\t&.ck-widget_selected {\n\t\t\tz-index: 2;\n\t\t}\n\t}\n\n\t/*\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\n\t */\n\t& .image-inline {\n\t\tz-index: 1;\n\n\t\t/*\n\t\t * Make sure the selected inline image always stays on top of its siblings.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\n\t\t */\n\t\t&.ck-widget_selected {\n\t\t\tz-index: 2;\n\n\t\t\t/*\n\t\t\t * Make sure the native browser selection style is not displayed.\n\t\t\t * Inline image widgets have their own styles for the selected state and\n\t\t\t * leaving this up to the browser is asking for a visual collision.\n\t\t\t */\n\t\t\t& ::selection {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Keep proportions of the inline image if the height is set and the image is wider than the editor width.\n\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\n\t& .image-inline img {\n\t\theight: auto;\n\t}\n\n\t/* The inline image nested in the table should have its original size if not resized.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline img {\n\t\t\tmax-width: none;\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 7369: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highlighted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}@media (forced-colors:active){.ck-content .image>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:none}}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highlighted-background)}to{background-color:var(--ck-color-image-caption-background)}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css", ], names: [], mappings: "AAOA,MACC,2CAAoD,CACpD,kCAA8C,CAC9C,oDACD,CAGA,8BAKC,yDAA0D,CAH1D,mBAAoB,CAEpB,wCAAyC,CAHzC,qBAAsB,CAMtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,qBAYD,CAJC,8BAXD,8BAYE,sBAAuB,CACvB,WAEF,CADC,CCdA,4BACC,qEDmBA,iDCjBA,CACD,CDmBA,uCALD,qEAME,cAEF,CADC,CAGD,sCACC,GACC,qEACD,CAEA,GACC,yDACD,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-image-caption-highlighted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .image > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: bottom;\n\tword-break: break-word;\n\tcolor: var(--ck-color-image-caption-text);\n\tbackground-color: var(--ck-color-image-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\n\t@media (forced-colors: active) {\n\t\tbackground-color: unset;\n\t\tcolor: unset;\n\t}\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\n\t@mixin ck-media-default-colors {\n\t\tanimation: ck-image-caption-highlight .6s ease-out;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation: none;\n\t}\n}\n\n@keyframes ck-image-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-image-caption-highlighted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-image-caption-background);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1096: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-image-custom-resize-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{display:inline-block}.ck.ck-image-custom-resize-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-image-custom-resize-form{flex-wrap:wrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-image-custom-resize-form .ck-button{flex-basis:50%}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecustomresizeform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAOA,gCAIC,sBAAuB,CAHvB,YAAa,CACb,kBAAmB,CACnB,gBAsBD,CAnBC,uDACC,oBACD,CAEA,0CACC,YACD,CCbA,oCDCD,gCAeE,cAUF,CARE,uDACC,eACD,CAEA,2CACC,cACD,CCtBD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-image-custom-resize-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: flex-start;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5420: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-image-insert-url .ck-image-insert-url__action-row{display:grid;grid-template-columns:repeat(2,1fr)}:root{--ck-image-insert-insert-by-url-width:250px}.ck.ck-image-insert-url{--ck-input-width:100%}.ck.ck-image-insert-url .ck-image-insert-url__action-row{grid-column-gap:var(--ck-spacing-large);margin-top:var(--ck-spacing-large)}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-cancel,.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-save{justify-content:center;min-width:auto}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}.ck.ck-image-insert-form>.ck.ck-button{display:block;padding:var(--ck-list-button-padding);width:100%}[dir=ltr] .ck.ck-image-insert-form>.ck.ck-button{text-align:left}[dir=rtl] .ck.ck-image-insert-form>.ck.ck-button{text-align:right}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:first-child){border-top:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:last-child){border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-collapsible,.ck.ck-image-insert-form>.ck.ck-image-insert-url{min-width:var(--ck-image-insert-insert-by-url-width)}.ck.ck-image-insert-form>.ck.ck-image-insert-url{padding:var(--ck-spacing-large)}.ck.ck-image-insert-form:focus{outline:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageinsert.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageinsert.css", ], names: [], mappings: "AAMC,yDACC,YAAa,CACb,mCACD,CCFD,MACC,2CACD,CAEA,wBACC,qBAgBD,CAdC,yDACC,uCAAwC,CACxC,kCAWD,CATC,oJAEC,sBAAuB,CACvB,cACD,CAEA,sFACC,0BACD,CAKD,uCACC,aAAc,CAEd,qCAAsC,CADtC,UAUD,CAZA,iDAME,eAMF,CAZA,iDAUE,gBAEF,CAGC,8DACC,gDACD,CAEA,6DACC,mDACD,CAMD,6FAJC,oDAOD,CAHA,iDAEC,+BACD,CAEA,+BACC,YACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-image-insert-url {\n\t& .ck-image-insert-url__action-row {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(2, 1fr);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-image-insert-insert-by-url-width: 250px;\n}\n\n.ck.ck-image-insert-url {\n\t--ck-input-width: 100%;\n\n\t& .ck-image-insert-url__action-row {\n\t\tgrid-column-gap: var(--ck-spacing-large);\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t\tmin-width: auto;\n\t\t}\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n\n.ck.ck-image-insert-form {\n\t& > .ck.ck-button {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tpadding: var(--ck-list-button-padding);\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& > .ck.ck-collapsible {\n\t\t&:not(:first-child) {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\t&:not(:last-child) {\n\t\t\tborder-bottom: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\n\t}\n\n\t/* This is the case when there are no other integrations configured than insert by URL */\n\t& > .ck.ck-image-insert-url {\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\n\t\tpadding: var(--ck-spacing-large);\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 8588: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-editor__editable img.image_placeholder{background-size:100% 100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageplaceholder.css", ], names: [], mappings: "AAMC,8CACC,yBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t& img.image_placeholder {\n\t\tbackground-size: 100% 100%;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5035: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content img.image_resized{height:auto}.ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageresize.css", ], names: [], mappings: "AAMA,8BACC,WACD,CAEA,iCAQC,qBAAsB,CADtB,aAAc,CANd,cAkBD,CATC,qCAEC,UACD,CAEA,4CAEC,aACD,CAQC,sHACC,cACD,CAIF,oFACC,uCACD,CAEA,oFACC,sCACD,CAEA,oEACC,SACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Preserve aspect ratio of the resized image after introducing image height attribute. */\n.ck-content img.image_resized {\n\theight: auto;\n}\n\n.ck-content .image.image_resized {\n\tmax-width: 100%;\n\t/*\n\tThe `
` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\n\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\n\tFortunately, since we control the width, there is no risk that the image will look bad.\n\t*/\n\tdisplay: block;\n\tbox-sizing: border-box;\n\n\t& img {\n\t\t/* For resized images it is the `
` element that determines the image width. */\n\t\twidth: 100%;\n\t}\n\n\t& > figcaption {\n\t\t/* The `
` element uses `display:block`, so `
` also has to. */\n\t\tdisplay: block;\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/* The resized inline image nested in the table should respect its parent size.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline.image_resized img {\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n[dir="ltr"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-right: var(--ck-spacing-standard);\n}\n\n[dir="rtl"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-left: var(--ck-spacing-standard);\n}\n\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\n\twidth: 4em;\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 1644: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css", ], names: [], mappings: "AAKA,MACC,8BAA+B,CAC/B,qEACD,CAMC,qFAEC,oDACD,CAIA,yEAEC,UACD,CAEA,8BACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,sCACC,gBAAiB,CACjB,iBACD,CAEA,qCACC,WAAY,CACZ,yCACD,CAEA,2CAEC,gBAAiB,CADjB,cAED,CAEA,0CACC,aAAc,CACd,iBACD,CAGA,6GAGC,YACD,CAGC,mGAGC,kDAAmD,CADnD,+CAED,CAEA,iDACC,iDACD,CAEA,kDACC,gDACD,CAUC,0lBAGC,qDAKD,CAHC,8nBACC,YACD,CAKD,oVAGC,2DACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-image-style-spacing: 1.5em;\n\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\n}\n\n.ck-content {\n\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\n\tconfirming successful application of the style if image width exceeds the editor's size.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\n\t& .image-style-block-align-left,\n\t& .image-style-block-align-right {\n\t\tmax-width: calc(100% - var(--ck-image-style-spacing));\n\t}\n\n\t/* Allows displaying multiple floating images in the same line.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\n\t& .image-style-align-left,\n\t& .image-style-align-right {\n\t\tclear: none;\n\t}\n\n\t& .image-style-side {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t\tmax-width: 50%;\n\t}\n\n\t& .image-style-align-left {\n\t\tfloat: left;\n\t\tmargin-right: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-align-center {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t}\n\n\t& .image-style-align-right {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-block-align-right {\n\t\tmargin-right: 0;\n\t\tmargin-left: auto;\n\t}\n\n\t& .image-style-block-align-left {\n\t\tmargin-left: 0;\n\t\tmargin-right: auto;\n\t}\n\n\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\n\t& p + .image-style-align-left,\n\t& p + .image-style-align-right,\n\t& p + .image-style-side {\n\t\tmargin-top: 0;\n\t}\n\n\t& .image-inline {\n\t\t&.image-style-align-left,\n\t\t&.image-style-align-right {\n\t\t\tmargin-top: var(--ck-inline-image-style-spacing);\n\t\t\tmargin-bottom: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-left {\n\t\t\tmargin-right: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-right {\n\t\t\tmargin-left: var(--ck-inline-image-style-spacing);\n\t\t}\n\t}\n}\n\n.ck.ck-splitbutton {\n\t/* The button should display as a regular drop-down if the action button\n\tis forced to fire the same action as the arrow button. */\n\t&.ck-splitbutton_flatten {\n\t\t&:hover,\n\t\t&.ck-splitbutton_open {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-background);\n\n\t\t\t\t&::after {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.ck-splitbutton_open:hover {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-hover-background);\n\t\t\t}\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9967: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@media (prefers-reduced-motion:reduce){.ck-image-upload-complete-icon{animation-duration:0ms}.ck-image-upload-complete-icon:after{animation:none;height:.45em;opacity:1;width:.3em}}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css", ], names: [], mappings: "AAKA,+BAUC,iBAAkB,CATlB,aAAc,CACd,iBAAkB,CAOlB,sCAAwC,CADxC,oCAAsC,CAGtC,SAMD,CAJC,qCACC,UAAW,CACX,iBACD,CChBD,MACC,iCAA8C,CAC9C,+CAA4D,CAG5D,8BAA+B,CAC/B,gCAAiC,CACjC,4DACD,CAEA,+BAWC,sBAA4B,CAN5B,0BAAgC,CADhC,qCAAuC,CADvC,wEAA0E,CAD1E,uDAAwD,CAMxD,oDAAuD,CAWvD,oFAAuF,CAlBvF,SAAU,CAgBV,eAAgB,CAChB,mFAqCD,CAjCC,qCAgBC,mBAAsB,CADtB,sBAAyB,CAEzB,4BAA6B,CAH7B,4CAA6C,CAF7C,sFAAuF,CADvF,oFAAqF,CASrF,qBAAsB,CAdtB,QAAS,CAJT,QAAS,CAGT,SAAU,CADV,OAAQ,CAKR,mCAAoC,CACpC,yBAA0B,CAH1B,OAcD,CAEA,uCA7CD,+BA8CE,sBASF,CAPE,qCACC,cAAe,CAGf,YAAc,CAFd,SAAU,CACV,UAED,CACD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GAGC,QAAS,CAFT,SAAU,CACV,OAED,CACA,IAEC,QAAS,CADT,UAED,CACA,GAGC,YAAc,CAFd,SAAU,CACV,UAED,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-image-upload-complete-icon {\n\tdisplay: block;\n\tposition: absolute;\n\n\t/*\n\t * Smaller images should have the icon closer to the border.\n\t * Match the icon position with the linked image indicator brought by the link image feature.\n\t */\n\ttop: min(var(--ck-spacing-medium), 6%);\n\tright: min(var(--ck-spacing-medium), 6%);\n\tborder-radius: 50%;\n\tz-index: 1;\n\n\t&::after {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\n\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\n\n\t/* Match the icon size with the linked image indicator brought by the link image feature. */\n\t--ck-image-upload-icon-size: 20;\n\t--ck-image-upload-icon-width: 2px;\n\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck-image-upload-complete-icon {\n\topacity: 0;\n\tbackground: var(--ck-color-image-upload-icon-background);\n\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\n\tanimation-fill-mode: forwards, forwards;\n\tanimation-duration: 500ms, 500ms;\n\n\t/* To make animation scalable. */\n\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\n\n\t/* Hide completed upload icon after 3 seconds. */\n\tanimation-delay: 0ms, 3000ms;\n\n\t/*\n\t * Use CSS math to simulate container queries.\n\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t */\n\toverflow: hidden;\n\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\n\t/* This is check icon element made from border-width mixed with animations. */\n\t&::after {\n\t\t/* Because of border transformation we need to "hard code" left position. */\n\t\tleft: 25%;\n\n\t\ttop: 50%;\n\t\topacity: 0;\n\t\theight: 0;\n\t\twidth: 0;\n\n\t\ttransform: scaleX(-1) rotate(135deg);\n\t\ttransform-origin: left top;\n\t\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\t\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\n\t\tanimation-name: ck-upload-complete-icon-check;\n\t\tanimation-duration: 500ms;\n\t\tanimation-delay: 500ms;\n\t\tanimation-fill-mode: forwards;\n\n\t\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\n\t\tbox-sizing: border-box;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation-duration: 0ms;\n\n\t\t&::after {\n\t\t\tanimation: none;\n\t\t\topacity: 1;\n\t\t\twidth: 0.3em;\n\t\t\theight: 0.45em;\n\t\t}\n\t}\n}\n\n@keyframes ck-upload-complete-icon-show {\n\tfrom {\n\t\topacity: 0;\n\t}\n\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-hide {\n\tfrom {\n\t\topacity: 1;\n\t}\n\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-check {\n\t0% {\n\t\topacity: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t33% {\n\t\twidth: 0.3em;\n\t\theight: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t\twidth: 0.3em;\n\t\theight: 0.45em;\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 2021: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css", ], names: [], mappings: "AAKA,kCAGC,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCAAyC,CACzC,8CACD,CAEA,iCAGC,QAAS,CADT,UAgBD,CAbC,8CACC,sGACD,CAEA,qCAOC,4DACD,CAGD,kCAEC,WAAY,CADZ,UAWD,CARC,yCAMC,yDAA0D,CAH1D,iBAAkB,CAElB,kCAAmC,CADnC,8DAA+D,CAF/D,+CAAgD,CADhD,8CAMD,CAGD,wCACC,GACC,uBACD,CACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-upload-placeholder-loader {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttop: 0;\n\tleft: 0;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: relative;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\n\t--ck-upload-placeholder-loader-size: 32px;\n\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\n}\n\n.ck .ck-image-upload-placeholder {\n\t/* We need to control the full width of the SVG gray background. */\n\twidth: 100%;\n\tmargin: 0;\n\n\t&.image-inline {\n\t\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\n\t}\n\n\t& img {\n\t\t/*\n\t\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\n\t\t * There's nothing special about this number except that it should make the image placeholder look like\n\t\t * a real image during this short period after the upload started and before the image was read from the\n\t\t * file system (and a rich preview was loaded).\n\t\t */\n\t\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\n\t}\n}\n\n.ck .ck-upload-placeholder-loader {\n\twidth: 100%;\n\theight: 100%;\n\n\t&::before {\n\t\twidth: var(--ck-upload-placeholder-loader-size);\n\t\theight: var(--ck-upload-placeholder-loader-size);\n\t\tborder-radius: 50%;\n\t\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\n\t\tborder-right: 2px solid transparent;\n\t\tanimation: ck-upload-placeholder-loader 1s linear infinite;\n\t}\n}\n\n@keyframes ck-upload-placeholder-loader {\n\tto {\n\t\ttransform: rotate( 360deg );\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 2209: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:none;opacity:1}}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css", ], names: [], mappings: "AAMC,qEAEC,iBACD,CAGA,uGAIC,MAAO,CAFP,iBAAkB,CAClB,KAED,CCRC,yFACC,oBAMD,CAJC,uCAHD,yFAKE,cAAe,CADf,SAGF,CADC,CAKF,uGAIC,gDAAiD,CAFjD,UAAW,CAGX,oBAAuB,CAFvB,OAGD,CAGD,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\tposition: relative;\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\t/* Showing animation. */\n\t\t&.ck-appear {\n\t\t\tanimation: fadeIn 700ms;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\topacity: 1;\n\t\t\t\tanimation: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\theight: 2px;\n\t\twidth: 0;\n\t\tbackground: var(--ck-color-upload-bar-background);\n\t\ttransition: width 100ms;\n\t}\n}\n\n@keyframes fadeIn {\n\tfrom { opacity: 0; }\n\tto { opacity: 1; }\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8748: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-text-alternative-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7865: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/link.css", ], names: [], mappings: "AAMA,sBACC,mDAMD,CAHC,wCACC,yFACD,CAOD,4BACC,8CACD,CAGA,sCAEC,gDAAiD,CADjD,WAAY,CAEZ,iBAAkB,CAClB,oCACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Class added to span element surrounding currently selected link. */\n.ck .ck-link_selected {\n\tbackground: var(--ck-color-link-selected-background);\n\n\t/* Give linked inline images some outline to let the user know they are also part of the link. */\n\t& span.image-inline {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\n\t}\n}\n\n/*\n * Classes used by the "fake visual selection" displayed in the content when an input\n * in the link UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-link-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-link-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 6144: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css", ], names: [], mappings: "AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCIA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EAEC,kCAAmC,CAEnC,cAAe,CAIf,+BAAgC,CAChC,aAAc,CARd,kCAAmC,CASnC,iBAAkB,CAPlB,sBAYD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDtDD,oCC0DC,wDACC,8DAMD,CAJC,0EAEC,cAAe,CADf,WAED,CAGD,gJAME,aAEF,CDzED", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-link-actions__preview {\n\t\tdisplay: inline-block;\n\n\t\t& .ck-button__label {\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-link-actions__preview {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\t& .ck-button.ck-link-actions__preview {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\n\t\t& .ck-button__label {\n\t\t\tpadding: 0 var(--ck-spacing-medium);\n\t\t\tcolor: var(--ck-color-link-default);\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: pointer;\n\n\t\t\t/* Match the box model of the link editor form\'s input so the balloon\n\t\t\tdoes not change width when moving between actions and the form. */\n\t\t\tmax-width: var(--ck-input-width);\n\t\t\tmin-width: 3em;\n\t\t\ttext-align: center;\n\n\t\t\t&:hover {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t\t&,\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t& .ck-button__label {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-button:not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-button:not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\t& .ck-button.ck-link-actions__preview {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-button__label {\n\t\t\t\tmin-width: 0;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 2375: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-link-form{align-items:flex-start;display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css", ], names: [], mappings: "AAOA,iBAEC,sBAAuB,CADvB,YAkBD,CAfC,2BACC,YACD,CCPA,oCDCD,iBASE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CChBD,CDwBD,iCACC,aAYD,CALE,wHAEC,mCACD,CEhCF,iCAEC,+BAAgC,CADhC,SAgDD,CA7CC,wDACC,8EAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CAIC,eAAgB,CAFhB,QAAS,CADT,kCAAmC,CAEnC,SAkBD,CAfC,wDACC,gDACD,CARD,4GAeE,aAMF,CAJE,mEACC,kDACD,CAKF,6CACC,yDAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tdisplay: block;\n\n\t/*\n\t * Whether the form is in the responsive mode or not, if there are decorator buttons\n\t * keep the top margin of action buttons medium.\n\t */\n\t& .ck-button {\n\t\t&.ck-button-save,\n\t\t&.ck-button-cancel {\n\t\t\tmargin-top: var(--ck-spacing-medium);\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tpadding: 0;\n\tmin-width: var(--ck-input-width);\n\n\t& .ck-labeled-field-view {\n\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\n\n\t\t& .ck-input-text {\n\t\t\tmin-width: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t& > .ck-button {\n\t\tpadding: var(--ck-spacing-standard);\n\t\tmargin: 0;\n\t\twidth: 50%;\n\t\tborder-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: 0;\n\n\t\t\t&:last-of-type {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\n\t& .ck.ck-list {\n\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\n\n\t\t& .ck-button.ck-switchbutton {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: none;\n\t\t\t}\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 1634: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css", ], names: [], mappings: "AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,83BAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* Match the icon size with the upload indicator brought by the image upload feature. */\n\t--ck-link-image-indicator-icon-size: 20;\n\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tcontent: "";\n\n\t\t\t/*\n\t\t\t * Smaller images should have the icon closer to the border.\n\t\t\t * Match the icon position with the upload indicator brought by the image upload feature.\n\t\t\t */\n\t\t\ttop: min(var(--ck-spacing-medium), 6%);\n\t\t\tright: min(var(--ck-spacing-medium), 6%);\n\n\t\t\tbackground-color: hsla(0, 0%, 0%, .4);\n\t\t\tbackground-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");\n\t\t\tbackground-size: 14px;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tborder-radius: 100%;\n\n\t\t\t/*\n\t\t\t* Use CSS math to simulate container queries.\n\t\t\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t\t\t*/\n\t\t\toverflow: hidden;\n\t\t\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t}\n\t}\n}\n\n', ], sourceRoot: "", }, ]); const c = a; }, 9724: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content .media{clear:both;display:block;margin:.9em 0;min-width:15em}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaembed.css", ], names: [], mappings: "AAKA,mBAGC,UAAW,CASX,aAAc,CAJd,aAAe,CAQf,cACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .media {\n\t/* Don\'t allow floated content overlap the media.\n\thttps://github.com/ckeditor/ckeditor5-media-embed/issues/53 */\n\tclear: both;\n\n\t/* Make sure there is some space between the content and the media. */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em 0;\n\n\t/* Make sure media is not overriden with Bootstrap default `flex` value.\n\tSee: https://github.com/ckeditor/ckeditor5/issues/1373. */\n\tdisplay: block;\n\n\t/* Give the media some minimal width in the content to prevent them\n\tfrom being "squashed" in tight spaces, e.g. in table cells (#44) */\n\tmin-width: 15em;\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 8074: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck-media__wrapper .ck-media__placeholder{align-items:center;display:flex;flex-direction:column}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{display:block;overflow:hidden}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{background:var(--ck-color-base-foreground);padding:calc(var(--ck-spacing-standard)*3)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{background-position:50%;background-size:cover;height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);min-width:var(--ck-media-embed-placeholder-icon-size)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{height:100%;width:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);font-style:italic;text-align:center;text-overflow:ellipsis;white-space:nowrap}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-height:380px;max-width:300px}.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Im0yMDYuNDc3IDI2MC45LTI4Ljk4NyAyOC45ODdhNS4yMTggNS4yMTggMCAwIDAgMy43OCAxLjYxaDQ5LjYyMWMxLjY5NCAwIDMuMTktLjc5OCA0LjE0Ni0yLjAzN3oiIGZpbGw9IiM1Yzg4YzUiLz48cGF0aCBkPSJNMjI2Ljc0MiAyMjIuOTg4Yy05LjI2NiAwLTE2Ljc3NyA3LjE3LTE2Ljc3NyAxNi4wMTQuMDA3IDIuNzYyLjY2MyA1LjQ3NCAyLjA5MyA3Ljg3NS40My43MDMuODMgMS40MDggMS4xOSAyLjEwNy4zMzMuNTAyLjY1IDEuMDA1Ljk1IDEuNTA4LjM0My40NzcuNjczLjk1Ny45ODggMS40NCAxLjMxIDEuNzY5IDIuNSAzLjUwMiAzLjYzNyA1LjE2OC43OTMgMS4yNzUgMS42ODMgMi42NCAyLjQ2NiAzLjk5IDIuMzYzIDQuMDk0IDQuMDA3IDguMDkyIDQuNiAxMy45MTR2LjAxMmMuMTgyLjQxMi41MTYuNjY2Ljg3OS42NjcuNDAzLS4wMDEuNzY4LS4zMTQuOTMtLjc5OS42MDMtNS43NTYgMi4yMzgtOS43MjkgNC41ODUtMTMuNzk0Ljc4Mi0xLjM1IDEuNjczLTIuNzE1IDIuNDY1LTMuOTkgMS4xMzctMS42NjYgMi4zMjgtMy40IDMuNjM4LTUuMTY5LjMxNS0uNDgyLjY0NS0uOTYyLjk4OC0xLjQzOS4zLS41MDMuNjE3LTEuMDA2Ljk1LTEuNTA4LjM1OS0uNy43Ni0xLjQwNCAxLjE5LTIuMTA3IDEuNDI2LTIuNDAyIDItNS4xMTQgMi4wMDQtNy44NzUgMC04Ljg0NC03LjUxMS0xNi4wMTQtMTYuNzc2LTE2LjAxNHoiIGZpbGw9IiNkZDRiM2UiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PGVsbGlwc2Ugcnk9IjUuNTY0IiByeD0iNS44MjgiIGN5PSIyMzkuMDAyIiBjeD0iMjI2Ljc0MiIgZmlsbD0iIzgwMmQyNyIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMTkwLjMwMSAyMzcuMjgzYy00LjY3IDAtOC40NTcgMy44NTMtOC40NTcgOC42MDZzMy43ODYgOC42MDcgOC40NTcgOC42MDdjMy4wNDMgMCA0LjgwNi0uOTU4IDYuMzM3LTIuNTE2IDEuNTMtMS41NTcgMi4wODctMy45MTMgMi4wODctNi4yOSAwLS4zNjItLjAyMy0uNzIyLS4wNjQtMS4wNzloLTguMjU3djMuMDQzaDQuODVjLS4xOTcuNzU5LS41MzEgMS40NS0xLjA1OCAxLjk4Ni0uOTQyLjk1OC0yLjAyOCAxLjU0OC0zLjkwMSAxLjU0OC0yLjg3NiAwLTUuMjA4LTIuMzcyLTUuMjA4LTUuMjk5IDAtMi45MjYgMi4zMzItNS4yOTkgNS4yMDgtNS4yOTkgMS4zOTkgMCAyLjYxOC40MDcgMy41ODQgMS4yOTNsMi4zODEtMi4zOGMwLS4wMDItLjAwMy0uMDA0LS4wMDQtLjAwNS0xLjU4OC0xLjUyNC0zLjYyLTIuMjE1LTUuOTU1LTIuMjE1em00LjQzIDUuNjYuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0ibTIxNS4xODQgMjUxLjkyOS03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVhNS4yMzMgNS4yMzMgMCAwIDAgLjQ0OS0yLjEyM3YtMzEuMTY1Yy0uNDY5LjY3NS0uOTM0IDEuMzQ5LTEuMzgyIDIuMDA1LS43OTIgMS4yNzUtMS42ODIgMi42NC0yLjQ2NSAzLjk5LTIuMzQ3IDQuMDY1LTMuOTgyIDguMDM4LTQuNTg1IDEzLjc5NC0uMTYyLjQ4NS0uNTI3Ljc5OC0uOTMuNzk5LS4zNjMtLjAwMS0uNjk3LS4yNTUtLjg3OS0uNjY3di0uMDEyYy0uNTkzLTUuODIyLTIuMjM3LTkuODItNC42LTEzLjkxNC0uNzgzLTEuMzUtMS42NzMtMi43MTUtMi40NjYtMy45OS0xLjEzNy0xLjY2Ni0yLjMyNy0zLjQtMy42MzctNS4xNjlsLS4wMDItLjAwM3oiIGZpbGw9IiNjM2MzYzMiLz48cGF0aCBkPSJtMjEyLjk4MyAyNDguNDk1LTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOCA1LjIzOGgxLjAxNWwzNS42NjYtMzUuNjY2YTEzNi4yNzUgMTM2LjI3NSAwIDAgMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAgMC0uOTg5LTEuNDQgMzUuMTI3IDM1LjEyNyAwIDAgMC0uOTUtMS41MDhjLS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJtMjExLjk5OCAyNjEuMDgzLTYuMTUyIDYuMTUxIDI0LjI2NCAyNC4yNjRoLjc4MWE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OVptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OVoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzNabTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1Wk00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDAgNDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaembedediting.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-media-embed/mediaembedediting.css", ], names: [], mappings: "AAMC,0CAGC,kBAAmB,CAFnB,YAAa,CACb,qBAcD,CAXC,sEAEC,cAAe,CAEf,iBAMD,CAJC,wGAEC,aAAc,CADd,eAED,CAWD,6kBACC,YACD,CAYF,2LACC,mBACD,CC1CA,MACC,0CAA2C,CAE3C,mDAA4D,CAC5D,2EACD,CAEA,mBACC,aA+FD,CA7FC,0CAEC,0CAA2C,CAD3C,0CA6BD,CA1BC,uEAIC,uBAA2B,CAC3B,qBAAsB,CAHtB,kDAAmD,CACnD,qCAAsC,CAFtC,qDAUD,CAJC,gFAEC,WAAY,CADZ,UAED,CAGD,4EACC,sDAAuD,CAGvD,iBAAkB,CADlB,iBAAkB,CAElB,sBAAuB,CAHvB,kBAUD,CALC,kFACC,4DAA6D,CAC7D,cAAe,CACf,yBACD,CAIF,wDAEC,gBAAiB,CADjB,eAED,CAEA,4UAIC,wvGACD,CAEA,2EACC,kBAaD,CAXC,wGACC,orBACD,CAEA,6GACC,UAKD,CAHC,mHACC,UACD,CAIF,4EACC,2DAcD,CAZC,yGACC,4jHACD,CAGA,8GACC,aAKD,CAHC,oHACC,UACD,CAIF,6EAEC,iDAaD,CAXC,0GACC,wiCACD,CAEA,+GACC,aAKD,CAHC,qHACC,UACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-media__wrapper {\n\t& .ck-media__placeholder {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t& .ck-media__placeholder__url {\n\t\t\t/* Otherwise the URL will overflow when the content is very narrow. */\n\t\t\tmax-width: 100%;\n\n\t\t\tposition: relative;\n\n\t\t\t& .ck-media__placeholder__url__text {\n\t\t\t\toverflow: hidden;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"],\n\t&[data-oembed-url*="google.com/maps"],\n\t&[data-oembed-url*="goo.gl/maps"],\n\t&[data-oembed-url*="maps.google.com"],\n\t&[data-oembed-url*="maps.app.goo.gl"],\n\t&[data-oembed-url*="facebook.com"],\n\t&[data-oembed-url*="instagram.com"] {\n\t\t& .ck-media__placeholder__icon * {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/* Disable all mouse interaction as long as the editor is not read–only.\n https://github.com/ckeditor/ckeditor5-media-embed/issues/58 */\n.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper > *:not(.ck-media__placeholder) {\n\tpointer-events: none;\n}\n\n/* Disable all mouse interaction when the widget is not selected (e.g. to avoid opening links by accident).\n https://github.com/ckeditor/ckeditor5-media-embed/issues/18 */\n.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder {\n\tpointer-events: none;\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-media-embed-placeholder-icon-size: 3em;\n\n\t--ck-color-media-embed-placeholder-url-text: hsl(0, 0%, 46%);\n\t--ck-color-media-embed-placeholder-url-text-hover: var(--ck-color-base-text);\n}\n\n.ck-media__wrapper {\n\tmargin: 0 auto;\n\n\t& .ck-media__placeholder {\n\t\tpadding: calc( 3 * var(--ck-spacing-standard) );\n\t\tbackground: var(--ck-color-base-foreground);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tmin-width: var(--ck-media-embed-placeholder-icon-size);\n\t\t\theight: var(--ck-media-embed-placeholder-icon-size);\n\t\t\tmargin-bottom: var(--ck-spacing-large);\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: cover;\n\n\t\t\t& .ck-icon {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text);\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: center;\n\t\t\tfont-style: italic;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\t&:hover {\n\t\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text-hover);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="open.spotify.com"] {\n\t\tmax-width: 300px;\n\t\tmax-height: 380px;\n\t}\n\n\t&[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon {\n\t\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMCAwIDMuNzggMS42MWg0OS42MjFjMS42OTQgMCAzLjE5LS43OTggNC4xNDYtMi4wMzd6IiBmaWxsPSIjNWM4OGM1Ii8+PHBhdGggZD0iTTIyNi43NDIgMjIyLjk4OGMtOS4yNjYgMC0xNi43NzcgNy4xNy0xNi43NzcgMTYuMDE0LjAwNyAyLjc2Mi42NjMgNS40NzQgMi4wOTMgNy44NzUuNDMuNzAzLjgzIDEuNDA4IDEuMTkgMi4xMDcuMzMzLjUwMi42NSAxLjAwNS45NSAxLjUwOC4zNDMuNDc3LjY3My45NTcuOTg4IDEuNDQgMS4zMSAxLjc2OSAyLjUgMy41MDIgMy42MzcgNS4xNjguNzkzIDEuMjc1IDEuNjgzIDIuNjQgMi40NjYgMy45OSAyLjM2MyA0LjA5NCA0LjAwNyA4LjA5MiA0LjYgMTMuOTE0di4wMTJjLjE4Mi40MTIuNTE2LjY2Ni44NzkuNjY3LjQwMy0uMDAxLjc2OC0uMzE0LjkzLS43OTkuNjAzLTUuNzU2IDIuMjM4LTkuNzI5IDQuNTg1LTEzLjc5NC43ODItMS4zNSAxLjY3My0yLjcxNSAyLjQ2NS0zLjk5IDEuMTM3LTEuNjY2IDIuMzI4LTMuNCAzLjYzOC01LjE2OS4zMTUtLjQ4Mi42NDUtLjk2Mi45ODgtMS40MzkuMy0uNTAzLjYxNy0xLjAwNi45NS0xLjUwOC4zNTktLjcuNzYtMS40MDQgMS4xOS0yLjEwNyAxLjQyNi0yLjQwMiAyLTUuMTE0IDIuMDA0LTcuODc1IDAtOC44NDQtNy41MTEtMTYuMDE0LTE2Ljc3Ni0xNi4wMTR6IiBmaWxsPSIjZGQ0YjNlIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxlbGxpcHNlIHJ5PSI1LjU2NCIgcng9IjUuODI4IiBjeT0iMjM5LjAwMiIgY3g9IjIyNi43NDIiIGZpbGw9IiM4MDJkMjciIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTE5MC4zMDEgMjM3LjI4M2MtNC42NyAwLTguNDU3IDMuODUzLTguNDU3IDguNjA2czMuNzg2IDguNjA3IDguNDU3IDguNjA3YzMuMDQzIDAgNC44MDYtLjk1OCA2LjMzNy0yLjUxNiAxLjUzLTEuNTU3IDIuMDg3LTMuOTEzIDIuMDg3LTYuMjkgMC0uMzYyLS4wMjMtLjcyMi0uMDY0LTEuMDc5aC04LjI1N3YzLjA0M2g0Ljg1Yy0uMTk3Ljc1OS0uNTMxIDEuNDUtMS4wNTggMS45ODYtLjk0Mi45NTgtMi4wMjggMS41NDgtMy45MDEgMS41NDgtMi44NzYgMC01LjIwOC0yLjM3Mi01LjIwOC01LjI5OSAwLTIuOTI2IDIuMzMyLTUuMjk5IDUuMjA4LTUuMjk5IDEuMzk5IDAgMi42MTguNDA3IDMuNTg0IDEuMjkzbDIuMzgxLTIuMzhjMC0uMDAyLS4wMDMtLjAwNC0uMDA0LS4wMDUtMS41ODgtMS41MjQtMy42Mi0yLjIxNS01Ljk1NS0yLjIxNXptNC40MyA1LjY2bC4wMDMuMDA2di0uMDAzeiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjE1LjE4NCAyNTEuOTI5bC03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVjLjI4Ny0uNjQ5LjQ0OS0xLjM2Ni40NDktMi4xMjN2LTMxLjE2NWMtLjQ2OS42NzUtLjkzNCAxLjM0OS0xLjM4MiAyLjAwNS0uNzkyIDEuMjc1LTEuNjgyIDIuNjQtMi40NjUgMy45OS0yLjM0NyA0LjA2NS0zLjk4MiA4LjAzOC00LjU4NSAxMy43OTQtLjE2Mi40ODUtLjUyNy43OTgtLjkzLjc5OS0uMzYzLS4wMDEtLjY5Ny0uMjU1LS44NzktLjY2N3YtLjAxMmMtLjU5My01LjgyMi0yLjIzNy05LjgyLTQuNi0xMy45MTQtLjc4My0xLjM1LTEuNjczLTIuNzE1LTIuNDY2LTMuOTktMS4xMzctMS42NjYtMi4zMjctMy40LTMuNjM3LTUuMTY5bC0uMDAyLS4wMDN6IiBmaWxsPSIjYzNjM2MzIi8+PHBhdGggZD0iTTIxMi45ODMgMjQ4LjQ5NWwtMzYuOTUyIDM2Ljk1M3YuODEyYTUuMjI3IDUuMjI3IDAgMCAwIDUuMjM4IDUuMjM4aDEuMDE1bDM1LjY2Ni0zNS42NjZhMTM2LjI3NSAxMzYuMjc1IDAgMCAwLTIuNzY0LTMuOSAzNy41NzUgMzcuNTc1IDAgMCAwLS45ODktMS40NGMtLjI5OS0uNTAzLS42MTYtMS4wMDYtLjk1LTEuNTA4LS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjExLjk5OCAyNjEuMDgzbC02LjE1MiA2LjE1MSAyNC4yNjQgMjQuMjY0aC43ODFhNS4yMjcgNS4yMjcgMCAwIDAgNS4yMzktNS4yMzh2LTEuMDQ1eiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48L2c+PC9zdmc+);\n\t}\n\n\t&[data-oembed-url*="facebook.com"] .ck-media__placeholder {\n\t\tbackground: hsl(220, 46%, 48%);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMDI0cHgiIGhlaWdodD0iMTAyNHB4IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgICAgICAgPHRpdGxlPkZpbGwgMTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImZMb2dvX1doaXRlIiBmaWxsPSIjRkZGRkZFIj4gICAgICAgICAgICA8cGF0aCBkPSJNOTY3LjQ4NCwwIEw1Ni41MTcsMCBDMjUuMzA0LDAgMCwyNS4zMDQgMCw1Ni41MTcgTDAsOTY3LjQ4MyBDMCw5OTguNjk0IDI1LjI5NywxMDI0IDU2LjUyMiwxMDI0IEw1NDcsMTAyNCBMNTQ3LDYyOCBMNDE0LDYyOCBMNDE0LDQ3MyBMNTQ3LDQ3MyBMNTQ3LDM1OS4wMjkgQzU0NywyMjYuNzY3IDYyNy43NzMsMTU0Ljc0NyA3NDUuNzU2LDE1NC43NDcgQzgwMi4yNjksMTU0Ljc0NyA4NTAuODQyLDE1OC45NTUgODY1LDE2MC44MzYgTDg2NSwyOTkgTDc4My4zODQsMjk5LjAzNyBDNzE5LjM5MSwyOTkuMDM3IDcwNywzMjkuNTI5IDcwNywzNzQuMjczIEw3MDcsNDczIEw4NjAuNDg3LDQ3MyBMODQwLjUwMSw2MjggTDcwNyw2MjggTDcwNywxMDI0IEw5NjcuNDg0LDEwMjQgQzk5OC42OTcsMTAyNCAxMDI0LDk5OC42OTcgMTAyNCw5NjcuNDg0IEwxMDI0LDU2LjUxNSBDMTAyNCwyNS4zMDMgOTk4LjY5NywwIDk2Ny40ODQsMCIgaWQ9IkZpbGwtMSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(220, 100%, 90%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="instagram.com"] .ck-media__placeholder {\n\t\tbackground: linear-gradient(-135deg,hsl(246, 100%, 39%),hsl(302, 100%, 36%),hsl(0, 100%, 48%));\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI1MDRweCIgaGVpZ2h0PSI1MDRweCIgdmlld0JveD0iMCAwIDUwNCA1MDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+Z2x5cGgtbG9nb19NYXkyMDE2PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtMSIgcG9pbnRzPSIwIDAuMTU5IDUwMy44NDEgMC4xNTkgNTAzLjg0MSA1MDMuOTQgMCA1MDMuOTQiPjwvcG9seWdvbj4gICAgPC9kZWZzPiAgICA8ZyBpZD0iZ2x5cGgtbG9nb19NYXkyMDE2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJHcm91cC0zIj4gICAgICAgICAgICA8bWFzayBpZD0ibWFzay0yIiBmaWxsPSJ3aGl0ZSI+ICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+ICAgICAgICAgICAgPC9tYXNrPiAgICAgICAgICAgIDxnIGlkPSJDbGlwLTIiPjwvZz4gICAgICAgICAgICA8cGF0aCBkPSJNMjUxLjkyMSwwLjE1OSBDMTgzLjUwMywwLjE1OSAxNzQuOTI0LDAuNDQ5IDE0OC4wNTQsMS42NzUgQzEyMS4yNCwyLjg5OCAxMDIuOTI3LDcuMTU3IDg2LjkwMywxMy4zODUgQzcwLjMzNywxOS44MjIgNTYuMjg4LDI4LjQzNiA0Mi4yODIsNDIuNDQxIEMyOC4yNzcsNTYuNDQ3IDE5LjY2Myw3MC40OTYgMTMuMjI2LDg3LjA2MiBDNi45OTgsMTAzLjA4NiAyLjczOSwxMjEuMzk5IDEuNTE2LDE0OC4yMTMgQzAuMjksMTc1LjA4MyAwLDE4My42NjIgMCwyNTIuMDggQzAsMzIwLjQ5NyAwLjI5LDMyOS4wNzYgMS41MTYsMzU1Ljk0NiBDMi43MzksMzgyLjc2IDYuOTk4LDQwMS4wNzMgMTMuMjI2LDQxNy4wOTcgQzE5LjY2Myw0MzMuNjYzIDI4LjI3Nyw0NDcuNzEyIDQyLjI4Miw0NjEuNzE4IEM1Ni4yODgsNDc1LjcyMyA3MC4zMzcsNDg0LjMzNyA4Ni45MDMsNDkwLjc3NSBDMTAyLjkyNyw0OTcuMDAyIDEyMS4yNCw1MDEuMjYxIDE0OC4wNTQsNTAyLjQ4NCBDMTc0LjkyNCw1MDMuNzEgMTgzLjUwMyw1MDQgMjUxLjkyMSw1MDQgQzMyMC4zMzgsNTA0IDMyOC45MTcsNTAzLjcxIDM1NS43ODcsNTAyLjQ4NCBDMzgyLjYwMSw1MDEuMjYxIDQwMC45MTQsNDk3LjAwMiA0MTYuOTM4LDQ5MC43NzUgQzQzMy41MDQsNDg0LjMzNyA0NDcuNTUzLDQ3NS43MjMgNDYxLjU1OSw0NjEuNzE4IEM0NzUuNTY0LDQ0Ny43MTIgNDg0LjE3OCw0MzMuNjYzIDQ5MC42MTYsNDE3LjA5NyBDNDk2Ljg0Myw0MDEuMDczIDUwMS4xMDIsMzgyLjc2IDUwMi4zMjUsMzU1Ljk0NiBDNTAzLjU1MSwzMjkuMDc2IDUwMy44NDEsMzIwLjQ5NyA1MDMuODQxLDI1Mi4wOCBDNTAzLjg0MSwxODMuNjYyIDUwMy41NTEsMTc1LjA4MyA1MDIuMzI1LDE0OC4yMTMgQzUwMS4xMDIsMTIxLjM5OSA0OTYuODQzLDEwMy4wODYgNDkwLjYxNiw4Ny4wNjIgQzQ4NC4xNzgsNzAuNDk2IDQ3NS41NjQsNTYuNDQ3IDQ2MS41NTksNDIuNDQxIEM0NDcuNTUzLDI4LjQzNiA0MzMuNTA0LDE5LjgyMiA0MTYuOTM4LDEzLjM4NSBDNDAwLjkxNCw3LjE1NyAzODIuNjAxLDIuODk4IDM1NS43ODcsMS42NzUgQzMyOC45MTcsMC40NDkgMzIwLjMzOCwwLjE1OSAyNTEuOTIxLDAuMTU5IFogTTI1MS45MjEsNDUuNTUgQzMxOS4xODYsNDUuNTUgMzI3LjE1NCw0NS44MDcgMzUzLjcxOCw0Ny4wMTkgQzM3OC4yOCw0OC4xMzkgMzkxLjYxOSw1Mi4yNDMgNDAwLjQ5Niw1NS42OTMgQzQxMi4yNTUsNjAuMjYzIDQyMC42NDcsNjUuNzIyIDQyOS40NjIsNzQuNTM4IEM0MzguMjc4LDgzLjM1MyA0NDMuNzM3LDkxLjc0NSA0NDguMzA3LDEwMy41MDQgQzQ1MS43NTcsMTEyLjM4MSA0NTUuODYxLDEyNS43MiA0NTYuOTgxLDE1MC4yODIgQzQ1OC4xOTMsMTc2Ljg0NiA0NTguNDUsMTg0LjgxNCA0NTguNDUsMjUyLjA4IEM0NTguNDUsMzE5LjM0NSA0NTguMTkzLDMyNy4zMTMgNDU2Ljk4MSwzNTMuODc3IEM0NTUuODYxLDM3OC40MzkgNDUxLjc1NywzOTEuNzc4IDQ0OC4zMDcsNDAwLjY1NSBDNDQzLjczNyw0MTIuNDE0IDQzOC4yNzgsNDIwLjgwNiA0MjkuNDYyLDQyOS42MjEgQzQyMC42NDcsNDM4LjQzNyA0MTIuMjU1LDQ0My44OTYgNDAwLjQ5Niw0NDguNDY2IEMzOTEuNjE5LDQ1MS45MTYgMzc4LjI4LDQ1Ni4wMiAzNTMuNzE4LDQ1Ny4xNCBDMzI3LjE1OCw0NTguMzUyIDMxOS4xOTEsNDU4LjYwOSAyNTEuOTIxLDQ1OC42MDkgQzE4NC42NSw0NTguNjA5IDE3Ni42ODQsNDU4LjM1MiAxNTAuMTIzLDQ1Ny4xNCBDMTI1LjU2MSw0NTYuMDIgMTEyLjIyMiw0NTEuOTE2IDEwMy4zNDUsNDQ4LjQ2NiBDOTEuNTg2LDQ0My44OTYgODMuMTk0LDQzOC40MzcgNzQuMzc5LDQyOS42MjEgQzY1LjU2NCw0MjAuODA2IDYwLjEwNCw0MTIuNDE0IDU1LjUzNCw0MDAuNjU1IEM1Mi4wODQsMzkxLjc3OCA0Ny45OCwzNzguNDM5IDQ2Ljg2LDM1My44NzcgQzQ1LjY0OCwzMjcuMzEzIDQ1LjM5MSwzMTkuMzQ1IDQ1LjM5MSwyNTIuMDggQzQ1LjM5MSwxODQuODE0IDQ1LjY0OCwxNzYuODQ2IDQ2Ljg2LDE1MC4yODIgQzQ3Ljk4LDEyNS43MiA1Mi4wODQsMTEyLjM4MSA1NS41MzQsMTAzLjUwNCBDNjAuMTA0LDkxLjc0NSA2NS41NjMsODMuMzUzIDc0LjM3OSw3NC41MzggQzgzLjE5NCw2NS43MjIgOTEuNTg2LDYwLjI2MyAxMDMuMzQ1LDU1LjY5MyBDMTEyLjIyMiw1Mi4yNDMgMTI1LjU2MSw0OC4xMzkgMTUwLjEyMyw0Ny4wMTkgQzE3Ni42ODcsNDUuODA3IDE4NC42NTUsNDUuNTUgMjUxLjkyMSw0NS41NSBaIiBpZD0iRmlsbC0xIiBmaWxsPSIjRkZGRkZGIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4gICAgICAgIDwvZz4gICAgICAgIDxwYXRoIGQ9Ik0yNTEuOTIxLDMzNi4wNTMgQzIwNS41NDMsMzM2LjA1MyAxNjcuOTQ3LDI5OC40NTcgMTY3Ljk0NywyNTIuMDggQzE2Ny45NDcsMjA1LjcwMiAyMDUuNTQzLDE2OC4xMDYgMjUxLjkyMSwxNjguMTA2IEMyOTguMjk4LDE2OC4xMDYgMzM1Ljg5NCwyMDUuNzAyIDMzNS44OTQsMjUyLjA4IEMzMzUuODk0LDI5OC40NTcgMjk4LjI5OCwzMzYuMDUzIDI1MS45MjEsMzM2LjA1MyBaIE0yNTEuOTIxLDEyMi43MTUgQzE4MC40NzQsMTIyLjcxNSAxMjIuNTU2LDE4MC42MzMgMTIyLjU1NiwyNTIuMDggQzEyMi41NTYsMzIzLjUyNiAxODAuNDc0LDM4MS40NDQgMjUxLjkyMSwzODEuNDQ0IEMzMjMuMzY3LDM4MS40NDQgMzgxLjI4NSwzMjMuNTI2IDM4MS4yODUsMjUyLjA4IEMzODEuMjg1LDE4MC42MzMgMzIzLjM2NywxMjIuNzE1IDI1MS45MjEsMTIyLjcxNSBaIiBpZD0iRmlsbC00IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgICAgICA8cGF0aCBkPSJNNDE2LjYyNywxMTcuNjA0IEM0MTYuNjI3LDEzNC4zIDQwMy4wOTIsMTQ3LjgzNCAzODYuMzk2LDE0Ny44MzQgQzM2OS43MDEsMTQ3LjgzNCAzNTYuMTY2LDEzNC4zIDM1Ni4xNjYsMTE3LjYwNCBDMzU2LjE2NiwxMDAuOTA4IDM2OS43MDEsODcuMzczIDM4Ni4zOTYsODcuMzczIEM0MDMuMDkyLDg3LjM3MyA0MTYuNjI3LDEwMC45MDggNDE2LjYyNywxMTcuNjA0IiBpZD0iRmlsbC01IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgIDwvZz48L3N2Zz4=);\n\t\t}\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(302, 100%, 94%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder {\n\t\t/* Use gradient to contrast with focused widget (ckeditor/ckeditor5-media-embed#22). */\n\t\tbackground: linear-gradient( to right, hsl(201, 85%, 70%), hsl(201, 85%, 35%) );\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IldoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwMCA0MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDAsMjAwYzAsMTEwLjUtODkuNSwyMDAtMjAwLDIwMFMwLDMxMC41LDAsMjAwUzg5LjUsMCwyMDAsMFM0MDAsODkuNSw0MDAsMjAweiBNMTYzLjQsMzA1LjVjODguNywwLDEzNy4yLTczLjUsMTM3LjItMTM3LjJjMC0yLjEsMC00LjItMC4xLTYuMmM5LjQtNi44LDE3LjYtMTUuMywyNC4xLTI1Yy04LjYsMy44LTE3LjksNi40LTI3LjcsNy42YzEwLTYsMTcuNi0xNS40LDIxLjItMjYuN2MtOS4zLDUuNS0xOS42LDkuNS0zMC42LDExLjdjLTguOC05LjQtMjEuMy0xNS4yLTM1LjItMTUuMmMtMjYuNiwwLTQ4LjIsMjEuNi00OC4yLDQ4LjJjMCwzLjgsMC40LDcuNSwxLjMsMTFjLTQwLjEtMi03NS42LTIxLjItOTkuNC01MC40Yy00LjEsNy4xLTYuNSwxNS40LTYuNSwyNC4yYzAsMTYuNyw4LjUsMzEuNSwyMS41LDQwLjFjLTcuOS0wLjItMTUuMy0yLjQtMjEuOC02YzAsMC4yLDAsMC40LDAsMC42YzAsMjMuNCwxNi42LDQyLjgsMzguNyw0Ny4zYy00LDEuMS04LjMsMS43LTEyLjcsMS43Yy0zLjEsMC02LjEtMC4zLTkuMS0wLjljNi4xLDE5LjIsMjMuOSwzMy4xLDQ1LDMzLjVjLTE2LjUsMTIuOS0zNy4zLDIwLjYtNTkuOSwyMC42Yy0zLjksMC03LjctMC4yLTExLjUtMC43QzExMC44LDI5Ny41LDEzNi4yLDMwNS41LDE2My40LDMwNS41Ii8+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(201, 100%, 86%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 7269: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-media-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAOA,kBAEC,sBAAuB,CADvB,YAAa,CAEb,kBAAmB,CACnB,gBAqBD,CAnBC,yCACC,oBACD,CAEA,4BACC,YACD,CCbA,oCDCD,kBAeE,cAUF,CARE,yCACC,eACD,CAEA,6BACC,cACD,CCtBD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-media-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 4136: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-restricted-editing-exception-background:rgba(255,169,77,.2);--ck-color-restricted-editing-exception-hover-background:rgba(255,169,77,.35);--ck-color-restricted-editing-exception-brackets:rgba(204,105,0,.4);--ck-color-restricted-editing-selected-exception-background:rgba(255,169,77,.5);--ck-color-restricted-editing-selected-exception-brackets:rgba(204,105,0,.6)}.ck-editor__editable .restricted-editing-exception{background-color:var(--ck-color-restricted-editing-exception-background);border:1px solid;border-image:linear-gradient(to right,var(--ck-color-restricted-editing-exception-brackets) 0,var(--ck-color-restricted-editing-exception-brackets) 5px,transparent 6px,transparent calc(100% - 6px),var(--ck-color-restricted-editing-exception-brackets) calc(100% - 5px),var(--ck-color-restricted-editing-exception-brackets) 100%) 1;transition:background .2s ease-in-out}@media (prefers-reduced-motion:reduce){.ck-editor__editable .restricted-editing-exception{transition:none}}.ck-editor__editable .restricted-editing-exception.restricted-editing-exception_selected{background-color:var(--ck-color-restricted-editing-selected-exception-background);border-image:linear-gradient(to right,var(--ck-color-restricted-editing-selected-exception-brackets) 0,var(--ck-color-restricted-editing-selected-exception-brackets) 5px,var(--ck-color-restricted-editing-selected-exception-brackets) calc(100% - 5px),var(--ck-color-restricted-editing-selected-exception-brackets) 100%) 1}.ck-editor__editable .restricted-editing-exception.restricted-editing-exception_collapsed{padding-left:1ch}.ck-restricted-editing_mode_restricted,.ck-restricted-editing_mode_restricted *{cursor:default}.ck-restricted-editing_mode_restricted .restricted-editing-exception,.ck-restricted-editing_mode_restricted .restricted-editing-exception *{cursor:text}.ck-restricted-editing_mode_restricted .restricted-editing-exception:hover{background:var(--ck-color-restricted-editing-exception-hover-background)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-restricted-editing/restrictedediting.css", ], names: [], mappings: "AAKA,MACC,sEAA2E,CAC3E,6EAAkF,CAClF,mEAAyE,CACzE,+EAAoF,CACpF,4EACD,CAEA,mDAEC,wEAAyE,CACzE,gBAAiB,CACjB,yUAQG,CAXH,qCAgCD,CAnBC,uCAdD,mDAeE,eAkBF,CAjBC,CAEA,yFACC,iFAAkF,CAClF,gUAOD,CAEA,0FAEC,gBACD,CAQA,gFACC,cACD,CAKC,4IACC,WACD,CAEA,2EACC,wEACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-restricted-editing-exception-background: hsla(31, 100%, 65%, .2);\n\t--ck-color-restricted-editing-exception-hover-background: hsla(31, 100%, 65%, .35);\n\t--ck-color-restricted-editing-exception-brackets: hsla(31, 100%, 40%, .4);\n\t--ck-color-restricted-editing-selected-exception-background: hsla(31, 100%, 65%, .5);\n\t--ck-color-restricted-editing-selected-exception-brackets: hsla(31, 100%, 40%, .6);\n}\n\n.ck-editor__editable .restricted-editing-exception {\n\ttransition: .2s ease-in-out background;\n\tbackground-color: var(--ck-color-restricted-editing-exception-background);\n\tborder: 1px solid;\n\tborder-image: linear-gradient(\n\t\tto right,\n\t\tvar(--ck-color-restricted-editing-exception-brackets) 0%,\n\t\tvar(--ck-color-restricted-editing-exception-brackets) 5px,\n\t\thsla(0, 0%, 0%, 0) 6px,\n\t\thsla(0, 0%, 0%, 0) calc(100% - 6px),\n\t\tvar(--ck-color-restricted-editing-exception-brackets) calc(100% - 5px),\n\t\tvar(--ck-color-restricted-editing-exception-brackets) 100%\n\t) 1;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&.restricted-editing-exception_selected {\n\t\tbackground-color: var(--ck-color-restricted-editing-selected-exception-background);\n\t\tborder-image: linear-gradient(\n\t\t\tto right,\n\t\t\tvar(--ck-color-restricted-editing-selected-exception-brackets) 0%,\n\t\t\tvar(--ck-color-restricted-editing-selected-exception-brackets) 5px,\n\t\t\tvar(--ck-color-restricted-editing-selected-exception-brackets) calc(100% - 5px),\n\t\t\tvar(--ck-color-restricted-editing-selected-exception-brackets) 100%\n\t\t) 1;\n\t}\n\n\t&.restricted-editing-exception_collapsed {\n\t\t/* Empty exception should have the same width as exception with at least 1 char */\n\t\tpadding-left: 1ch;\n\t}\n}\n\n.ck-restricted-editing_mode_restricted {\n\tcursor: default;\n\n\t/* We also have to override all elements inside the restricted editable to prevent cursor switching between default and text\n\tduring the pointer movement. */\n\t& * {\n\t\tcursor: default;\n\t}\n\n\t& .restricted-editing-exception {\n\t\tcursor: text;\n\n\t\t& * {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-restricted-editing-exception-hover-background);\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 584: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-show-blocks-border-color:#757575}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) address{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,ADDRESS\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,ADDRESS\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) address:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) address{background-image:url(\"data:image/svg+xml;utf8,ADDRESS\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) address{background-image:url(\"data:image/svg+xml;utf8,ADDRESS\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) aside{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,ASIDE\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,ASIDE\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) aside:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) aside{background-image:url(\"data:image/svg+xml;utf8,ASIDE\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) aside{background-image:url(\"data:image/svg+xml;utf8,ASIDE\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) blockquote{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,BLOCKQUOTE\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,BLOCKQUOTE\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) blockquote:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) blockquote{background-image:url(\"data:image/svg+xml;utf8,BLOCKQUOTE\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) blockquote{background-image:url(\"data:image/svg+xml;utf8,BLOCKQUOTE\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) details{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,DETAILS\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,DETAILS\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) details:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) details{background-image:url(\"data:image/svg+xml;utf8,DETAILS\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) details{background-image:url(\"data:image/svg+xml;utf8,DETAILS\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) div:not(.ck-widget,.ck-widget *){background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,DIV\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,DIV\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) div:not(.ck-widget,.ck-widget *):not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) div:not(.ck-widget,.ck-widget *){background-image:url(\"data:image/svg+xml;utf8,DIV\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) div:not(.ck-widget,.ck-widget *){background-image:url(\"data:image/svg+xml;utf8,DIV\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) footer{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,FOOTER\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,FOOTER\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) footer:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) footer{background-image:url(\"data:image/svg+xml;utf8,FOOTER\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) footer{background-image:url(\"data:image/svg+xml;utf8,FOOTER\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h1{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H1\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H1\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h1:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h1{background-image:url(\"data:image/svg+xml;utf8,H1\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h1{background-image:url(\"data:image/svg+xml;utf8,H1\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h2{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H2\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H2\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h2:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h2{background-image:url(\"data:image/svg+xml;utf8,H2\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h2{background-image:url(\"data:image/svg+xml;utf8,H2\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h3{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H3\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H3\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h3:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h3{background-image:url(\"data:image/svg+xml;utf8,H3\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h3{background-image:url(\"data:image/svg+xml;utf8,H3\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h4{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H4\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H4\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h4:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h4{background-image:url(\"data:image/svg+xml;utf8,H4\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h4{background-image:url(\"data:image/svg+xml;utf8,H4\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h5{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H5\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H5\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h5:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h5{background-image:url(\"data:image/svg+xml;utf8,H5\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h5{background-image:url(\"data:image/svg+xml;utf8,H5\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h6{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,H6\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,H6\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h6:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h6{background-image:url(\"data:image/svg+xml;utf8,H6\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) h6{background-image:url(\"data:image/svg+xml;utf8,H6\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) header{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,HEADER\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,HEADER\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) header:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) header{background-image:url(\"data:image/svg+xml;utf8,HEADER\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) header{background-image:url(\"data:image/svg+xml;utf8,HEADER\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) main{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,MAIN\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,MAIN\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) main:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) main{background-image:url(\"data:image/svg+xml;utf8,MAIN\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) main{background-image:url(\"data:image/svg+xml;utf8,MAIN\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) nav{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,NAV\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,NAV\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) nav:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) nav{background-image:url(\"data:image/svg+xml;utf8,NAV\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) nav{background-image:url(\"data:image/svg+xml;utf8,NAV\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) pre{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,PRE\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,PRE\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) pre:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) pre{background-image:url(\"data:image/svg+xml;utf8,PRE\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) pre{background-image:url(\"data:image/svg+xml;utf8,PRE\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ol{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,OL\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,OL\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ol:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ol{background-image:url(\"data:image/svg+xml;utf8,OL\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ol{background-image:url(\"data:image/svg+xml;utf8,OL\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ul{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,UL\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,UL\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ul:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ul{background-image:url(\"data:image/svg+xml;utf8,UL\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) ul{background-image:url(\"data:image/svg+xml;utf8,UL\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) p{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,P\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,P\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) p:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) p{background-image:url(\"data:image/svg+xml;utf8,P\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) p{background-image:url(\"data:image/svg+xml;utf8,P\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) section{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,SECTION\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,SECTION\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) section:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) section{background-image:url(\"data:image/svg+xml;utf8,SECTION\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) section{background-image:url(\"data:image/svg+xml;utf8,SECTION\");background-position:calc(100% - 1px) 1px}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) :where(figure.image,figure.table) figcaption{background-repeat:no-repeat;padding-top:15px;[dir=ltr] &{background-image:url(\"data:image/svg+xml;utf8,FIGCAPTION\");background-position:1px 1px}[dir=rtl] &{background-image:url(\"data:image/svg+xml;utf8,FIGCAPTION\");background-position:calc(100% - 1px) 1px}}.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) :where(figure.image,figure.table) figcaption:not(.ck-widget_selected):not(.ck-widget:hover){outline:1px dashed var(--ck-show-blocks-border-color)}[dir=ltr] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) :where(figure.image,figure.table) figcaption{background-image:url(\"data:image/svg+xml;utf8,FIGCAPTION\");background-position:1px 1px}[dir=rtl] .ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) :where(figure.image,figure.table) figcaption{background-image:url(\"data:image/svg+xml;utf8,FIGCAPTION\");background-position:calc(100% - 1px) 1px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-show-blocks/theme/showblocks.css", ], names: [], mappings: "AAOA,MACC,qCACD,CAsCC,0FAzBA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,qfAAsf,CACtf,2BAgBA,CACA,YAbA,wiBAAyiB,CACziB,wCAcA,CAiBA,CAfA,yIACC,qDACD,CAWA,oGAnCA,qfAAsf,CACtf,2BAoCA,CAFA,oGA9BA,wiBAAyiB,CACziB,wCA+BA,CAEA,wFA7BA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,mfAAsf,CACtf,2BAgBA,CACA,YAbA,siBAAyiB,CACziB,wCAcA,CAqBA,CAnBA,uIACC,qDACD,CAeA,kGAvCA,mfAAsf,CACtf,2BAwCA,CAFA,kGAlCA,siBAAyiB,CACziB,wCAmCA,CAEA,6FAjCA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,wfAAsf,CACtf,2BAgBA,CACA,YAbA,2iBAAyiB,CACziB,wCAcA,CAyBA,CAvBA,4IACC,qDACD,CAmBA,uGA3CA,wfAAsf,CACtf,2BA4CA,CAFA,uGAtCA,2iBAAyiB,CACziB,wCAuCA,CAEA,0FArCA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,qfAAsf,CACtf,2BAgBA,CACA,YAbA,wiBAAyiB,CACziB,wCAcA,CA6BA,CA3BA,yIACC,qDACD,CAuBA,oGA/CA,qfAAsf,CACtf,2BAgDA,CAFA,oGA1CA,wiBAAyiB,CACziB,wCA2CA,CAEA,mHAzCA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,ifAAsf,CACtf,2BAgBA,CACA,YAbA,oiBAAyiB,CACziB,wCAcA,CAiCA,CA/BA,kKACC,qDACD,CA2BA,6HAnDA,ifAAsf,CACtf,2BAoDA,CAFA,6HA9CA,oiBAAyiB,CACziB,wCA+CA,CAEA,yFA7CA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,ofAAsf,CACtf,2BAgBA,CACA,YAbA,uiBAAyiB,CACziB,wCAcA,CAqCA,CAnCA,wIACC,qDACD,CA+BA,mGAvDA,ofAAsf,CACtf,2BAwDA,CAFA,mGAlDA,uiBAAyiB,CACziB,wCAmDA,CAEA,qFAjDA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAyCA,CAvCA,oIACC,qDACD,CAmCA,+FA3DA,gfAAsf,CACtf,2BA4DA,CAFA,+FAtDA,miBAAyiB,CACziB,wCAuDA,CAEA,qFArDA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CA6CA,CA3CA,oIACC,qDACD,CAuCA,+FA/DA,gfAAsf,CACtf,2BAgEA,CAFA,+FA1DA,miBAAyiB,CACziB,wCA2DA,CAEA,qFAzDA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAiDA,CA/CA,oIACC,qDACD,CA2CA,+FAnEA,gfAAsf,CACtf,2BAoEA,CAFA,+FA9DA,miBAAyiB,CACziB,wCA+DA,CAEA,qFA7DA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAqDA,CAnDA,oIACC,qDACD,CA+CA,+FAvEA,gfAAsf,CACtf,2BAwEA,CAFA,+FAlEA,miBAAyiB,CACziB,wCAmEA,CAEA,qFAjEA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAyDA,CAvDA,oIACC,qDACD,CAmDA,+FA3EA,gfAAsf,CACtf,2BA4EA,CAFA,+FAtEA,miBAAyiB,CACziB,wCAuEA,CAEA,qFArEA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CA6DA,CA3DA,oIACC,qDACD,CAuDA,+FA/EA,gfAAsf,CACtf,2BAgFA,CAFA,+FA1EA,miBAAyiB,CACziB,wCA2EA,CAEA,yFAzEA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,ofAAsf,CACtf,2BAgBA,CACA,YAbA,uiBAAyiB,CACziB,wCAcA,CAiEA,CA/DA,wIACC,qDACD,CA2DA,mGAnFA,ofAAsf,CACtf,2BAoFA,CAFA,mGA9EA,uiBAAyiB,CACziB,wCA+EA,CAEA,uFA7EA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,kfAAsf,CACtf,2BAgBA,CACA,YAbA,qiBAAyiB,CACziB,wCAcA,CAqEA,CAnEA,sIACC,qDACD,CA+DA,iGAvFA,kfAAsf,CACtf,2BAwFA,CAFA,iGAlFA,qiBAAyiB,CACziB,wCAmFA,CAEA,sFAjFA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,ifAAsf,CACtf,2BAgBA,CACA,YAbA,oiBAAyiB,CACziB,wCAcA,CAyEA,CAvEA,qIACC,qDACD,CAmEA,gGA3FA,ifAAsf,CACtf,2BA4FA,CAFA,gGAtFA,oiBAAyiB,CACziB,wCAuFA,CAEA,sFArFA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,ifAAsf,CACtf,2BAgBA,CACA,YAbA,oiBAAyiB,CACziB,wCAcA,CA6EA,CA3EA,qIACC,qDACD,CAuEA,gGA/FA,ifAAsf,CACtf,2BAgGA,CAFA,gGA1FA,oiBAAyiB,CACziB,wCA2FA,CAEA,qFAzFA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAiFA,CA/EA,oIACC,qDACD,CA2EA,+FAnGA,gfAAsf,CACtf,2BAoGA,CAFA,+FA9FA,miBAAyiB,CACziB,wCA+FA,CAEA,qFA7FA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,gfAAsf,CACtf,2BAgBA,CACA,YAbA,miBAAyiB,CACziB,wCAcA,CAqFA,CAnFA,oIACC,qDACD,CA+EA,+FAvGA,gfAAsf,CACtf,2BAwGA,CAFA,+FAlGA,miBAAyiB,CACziB,wCAmGA,CAEA,oFAjGA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,+eAAsf,CACtf,2BAgBA,CACA,YAbA,kiBAAyiB,CACziB,wCAcA,CAyFA,CAvFA,mIACC,qDACD,CAmFA,8FA3GA,+eAAsf,CACtf,2BA4GA,CAFA,8FAtGA,kiBAAyiB,CACziB,wCAuGA,CAEA,0FArGA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,qfAAsf,CACtf,2BAgBA,CACA,YAbA,wiBAAyiB,CACziB,wCAcA,CA6FA,CA3FA,yIACC,qDACD,CAuFA,oGA/GA,qfAAsf,CACtf,2BAgHA,CAFA,oGA1GA,wiBAAyiB,CACziB,wCA2GA,CAEA,+HAzGA,2BAA4B,CAC5B,gBAAiB,CAIjB,YAfA,wfAAsf,CACtf,2BAgBA,CACA,YAbA,2iBAAyiB,CACziB,wCAcA,CAiGA,CA/FA,8KACC,qDACD,CA2FA,yIAnHA,wfAAsf,CACtf,2BAoHA,CAFA,yIA9GA,2iBAAyiB,CACziB,wCA+GA", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import \"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\";\n\n:root {\n\t--ck-show-blocks-border-color: hsl(0, 0%, 46%);\n}\n\n@define-mixin block-name-background-ltr $text {\n\tbackground-image: url(\"data:image/svg+xml;utf8,$(text)\");\n\tbackground-position: 1px 1px;\n}\n\n@define-mixin block-name-background-rtl $text {\n\tbackground-image: url(\"data:image/svg+xml;utf8,$(text)\");\n\tbackground-position: calc(100% - 1px) 1px;\n}\n\n@define-mixin block-name-background $text {\n\tbackground-repeat: no-repeat;\n\tpadding-top: 15px;\n\n\t/* Fix for Multi-root editor\n\thttps://github.com/ckeditor/ckeditor5/issues/15969 */\n\t[dir=ltr] & {\n\t\t@mixin block-name-background-ltr $text;\n\t}\n\t[dir=rtl] & {\n\t\t@mixin block-name-background-rtl $text;\n\t}\n\n\t&:not(.ck-widget_selected):not(.ck-widget:hover) {\n\t\toutline: 1px dashed var(--ck-show-blocks-border-color);\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t@mixin block-name-background-ltr $text;\n\t}\n\t@mixin ck-dir rtl {\n\t\t@mixin block-name-background-rtl $text;\n\t}\n}\n\n.ck.ck-editor__editable.ck-editor__editable_inline.ck-show-blocks:not(.ck-widget) {\n\t& address {\n\t\t@mixin block-name-background ADDRESS;\n\t}\n\n\t& aside {\n\t\t@mixin block-name-background ASIDE;\n\t}\n\n\t& blockquote {\n\t\t@mixin block-name-background BLOCKQUOTE;\n\t}\n\n\t& details {\n\t\t@mixin block-name-background DETAILS;\n\t}\n\n\t& div:not(.ck-widget, .ck-widget *) {\n\t\t@mixin block-name-background DIV;\n\t}\n\n\t& footer {\n\t\t@mixin block-name-background FOOTER;\n\t}\n\n\t& h1 {\n\t\t@mixin block-name-background H1;\n\t}\n\n\t& h2 {\n\t\t@mixin block-name-background H2;\n\t}\n\n\t& h3 {\n\t\t@mixin block-name-background H3;\n\t}\n\n\t& h4 {\n\t\t@mixin block-name-background H4;\n\t}\n\n\t& h5 {\n\t\t@mixin block-name-background H5;\n\t}\n\n\t& h6 {\n\t\t@mixin block-name-background H6;\n\t}\n\n\t& header {\n\t\t@mixin block-name-background HEADER;\n\t}\n\n\t& main {\n\t\t@mixin block-name-background MAIN;\n\t}\n\n\t& nav {\n\t\t@mixin block-name-background NAV;\n\t}\n\n\t& pre {\n\t\t@mixin block-name-background PRE;\n\t}\n\n\t& ol {\n\t\t@mixin block-name-background OL;\n\t}\n\n\t& ul {\n\t\t@mixin block-name-background UL;\n\t}\n\n\t& p {\n\t\t@mixin block-name-background P;\n\t}\n\n\t& section {\n\t\t@mixin block-name-background SECTION;\n\t}\n\n\t& :where(figure.image, figure.table) figcaption {\n\t\t@mixin block-name-background FIGCAPTION;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6784: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck-source-editing-area{overflow:hidden;position:relative}.ck-source-editing-area textarea,.ck-source-editing-area:after{border:1px solid transparent;font-family:monospace;font-size:var(--ck-font-size-normal);line-height:var(--ck-line-height-base);margin:0;padding:var(--ck-spacing-large);white-space:pre-wrap}.ck-source-editing-area:after{content:attr(data-value) " ";display:block;visibility:hidden}.ck-source-editing-area textarea{border-color:var(--ck-color-base-border);border-radius:0;box-sizing:border-box;height:100%;outline:none;overflow:hidden;position:absolute;resize:none;width:100%}.ck-rounded-corners .ck-source-editing-area textarea,.ck-source-editing-area textarea.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck-source-editing-area textarea:not([readonly]):focus{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-source-editing/theme/sourceediting.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AASA,wBAEC,eAAgB,CADhB,iBAED,CAEA,+DAIC,4BAA6B,CAG7B,qBAAsB,CADtB,oCAAqC,CADrC,sCAAuC,CAFvC,QAAS,CADT,+BAAgC,CAMhC,oBACD,CAEA,8BACC,4BAA6B,CAE7B,aAAc,CADd,iBAED,CAEA,iCASC,wCAAyC,CC7BzC,eAAgB,CD2BhB,qBAAsB,CAJtB,WAAY,CAEZ,YAAa,CACb,eAAgB,CALhB,iBAAkB,CAGlB,WAAY,CAFZ,UAkBD,CApBA,yGChBE,qCAAsC,CD4BtC,wBAAyB,CACzB,yBAOF,CAJC,uDEpCA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFwCA", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css";\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css";\n\n.ck-source-editing-area {\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.ck-source-editing-area::after,\n.ck-source-editing-area textarea {\n\tpadding: var(--ck-spacing-large);\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tline-height: var(--ck-line-height-base);\n\tfont-size: var(--ck-font-size-normal);\n\tfont-family: monospace;\n\twhite-space: pre-wrap;\n}\n\n.ck-source-editing-area::after {\n\tcontent: attr(data-value) " ";\n\tvisibility: hidden;\n\tdisplay: block;\n}\n\n.ck-source-editing-area textarea {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tresize: none;\n\toutline: none;\n\toverflow: hidden;\n\tbox-sizing: border-box;\n\n\tborder-color: var(--ck-color-base-border);\n\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&:not([readonly]):focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9838: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{max-height:200px;overflow-x:hidden;overflow-y:auto;width:350px}@media screen and (max-width:600px){.ck.ck-character-grid{width:190px}}.ck.ck-character-grid .ck-character-grid__tiles{grid-gap:var(--ck-spacing-standard);grid-template-columns:repeat(10,1fr);margin:var(--ck-spacing-standard) var(--ck-spacing-large)}@media screen and (max-width:600px){.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(5,1fr)}}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.2em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}@media (prefers-reduced-motion:reduce){.ck.ck-character-grid .ck-character-grid__tile{transition:none}}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-special-characters/theme/charactergrid.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-special-characters/charactergrid.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAKA,sBACC,cAKD,CAHC,gDACC,YACD,CCFD,MACC,kCACD,CAEA,sBAIC,gBAAiB,CAFjB,iBAAkB,CADlB,eAAgB,CAEhB,WA6CD,CCtDC,oCDMD,sBAOE,WAyCF,CCpDC,CDcA,gDAGC,mCAAoC,CAFpC,oCAAsC,CACtC,yDAMD,CCxBA,oCDgBA,gDAME,mCAEF,CCtBA,CDwBA,+CAQC,QAAS,CAHT,eAAgB,CAHhB,yCAA0C,CAE1C,6CAA8C,CAD9C,4CAA6C,CAG7C,SAAU,CACV,8BAA+B,CAN/B,wCA0BD,CAjBC,uCAVD,+CAWE,eAgBF,CAfC,CAEA,8IAGC,QAAS,CACT,iGACD,CAGA,iEACC,8CAA+C,CAE/C,iBAAkB,CADlB,UAED", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-character-grid {\n\tmax-width: 100%;\n\n\t& .ck-character-grid__tiles {\n\t\tdisplay: grid;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "../mixins/_rounded.css";\n\n:root {\n\t--ck-character-grid-tile-size: 24px;\n}\n\n.ck.ck-character-grid {\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\twidth: 350px;\n\tmax-height: 200px;\n\n\t@mixin ck-media-phone {\n\t\twidth: 190px;\n\t}\n\n\t& .ck-character-grid__tiles {\n\t\tgrid-template-columns: repeat(10, 1fr);\n\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\n\t\tgrid-gap: var(--ck-spacing-standard);\n\n\t\t@mixin ck-media-phone {\n\t\t\tgrid-template-columns: repeat(5, 1fr);\n\t\t}\n\t}\n\n\t& .ck-character-grid__tile {\n\t\twidth: var(--ck-character-grid-tile-size);\n\t\theight: var(--ck-character-grid-tile-size);\n\t\tmin-width: var(--ck-character-grid-tile-size);\n\t\tmin-height: var(--ck-character-grid-tile-size);\n\t\tfont-size: 1.2em;\n\t\tpadding: 0;\n\t\ttransition: .2s ease box-shadow;\n\t\tborder: 0;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\n\t\t&:focus:not( .ck-disabled ),\n\t\t&:hover:not( .ck-disabled ) {\n\t\t\t/* Disable the default .ck-button\'s border ring. */\n\t\t\tborder: 0;\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t\t}\n\n\t\t/* Make sure the glyph is rendered in the center of the button */\n\t\t& .ck-button__label {\n\t\t\tline-height: var(--ck-character-grid-tile-size);\n\t\t\twidth: 100%;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6806: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}@media screen and (max-width:600px){.ck.ck-character-info{max-width:190px}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-special-characters/theme/characterinfo.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-special-characters/characterinfo.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAKA,sBCIC,gDAAiD,CDHjD,YAAa,CACb,6BAA8B,CCC9B,uDDAD,CCGC,wBAEC,mCAAoC,CADpC,wBAED,CAEA,+CACC,eAAgB,CAEhB,eAAgB,CADhB,sBAED,CAEA,+CACC,UACD,CClBA,oCDCD,sBAoBE,eAEF,CCrBC", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-character-info {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-character-info {\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\n\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t& > * {\n\t\ttext-transform: uppercase;\n\t\tfont-size: var(--ck-font-size-small);\n\t}\n\n\t& .ck-character-info__name {\n\t\tmax-width: 280px;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t& .ck-character-info__code {\n\t\topacity: .6;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tmax-width: 190px;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3542: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}@media screen and (max-width:600px){.ck.ck-special-characters-navigation{max-width:190px}.ck.ck-special-characters-navigation>.ck-form__header__label{overflow:hidden;text-overflow:ellipsis}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-special-characters/specialcharacters.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", ], names: [], mappings: "AAUC,+CACC,eAAgB,CAEhB,eAAgB,CADhB,sBAED,CAEA,sEAEC,gBAAiB,CAEjB,iBAAkB,CADlB,eAED,CCfA,oCDED,qCAgBE,eAOF,CALE,6DAEC,eAAgB,CADhB,sBAED,CCrBD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-special-characters-navigation {\n\n\t& > .ck-label {\n\t\tmax-width: 160px;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t& > .ck-dropdown .ck-dropdown__panel {\n\t\t/* There could be dozens of categories available. Use scroll to prevent a 10e6px dropdown. */\n\t\tmax-height: 250px;\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tmax-width: 190px;\n\n\t\t& > .ck-form__header__label {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7752: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAKA,mBAEC,YAAa,CACb,0BAA2B,CAF3B,UAgCD,CA5BC,0CAEC,WAAY,CADZ,cAED,CAEA,sCACC,cAMD,CAHC,kFACC,YACD,CAGD,8CAEC,YAWD,CATC,kFAEC,eAAgB,CADhB,iBAOD,CAJC,0IAEC,aAAc,CADd,iBAED,CC1BF,+CAGE,4BAA6B,CAD7B,yBAcF,CAhBA,+CAQE,2BAA4B,CAD5B,wBASF,CAHC,2CACC,SACD,CAIA,wEACC,SA0CD,CA3CA,kFAKE,2BAA4B,CAD5B,wBAuCF,CApCE,8FACC,iCACD,CATF,kFAcE,4BAA6B,CAD7B,yBA8BF,CA3BE,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GC1CF,eD2DE,CAjBA,+PCtCD,qCDuDC,CAjBA,4GAKC,6CAA8C,CAD9C,WAAY,CADZ,UAcD,CAVC,oKAKC,cAA6B,CAC7B,iBAAkB,CAHlB,WAAY,CADZ,QAAS,CADT,QAAS,CAMT,uBAAwB,CACxB,oBAAqB,CAJrB,QAKD,CAKH,oDAIC,2BAA4B,CAC5B,4BAA6B,CAH7B,qEAAwE,CADxE,UA0BD,CApBC,gEACC,oDACD,CATD,8DAYE,yBAeF,CA3BA,8DAgBE,wBAWF,CARC,gEACC,uCAMD,CAPA,0EAKE,sCAAuC,CADvC,cAGF", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-input-color {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\n\t& > input.ck.ck-input-text {\n\t\tmin-width: auto;\n\t\tflex-grow: 1;\n\t}\n\n\t& > div.ck.ck-dropdown {\n\t\tmin-width: auto;\n\n\t\t/* This dropdown has no arrow but a color preview instead. */\n\t\t& > .ck-input-color__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__button {\n\t\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\n\t\tdisplay: flex;\n\n\t\t& .ck.ck-input-color__button__preview {\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\n\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_rounded.css";\n\n.ck.ck-input-color {\n\t& > .ck.ck-input-text {\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* Make sure the focused input is always on top of the dropdown button so its\n\t\t outline and border are never cropped (also when the input is read-only). */\n\t\t&:focus {\n\t\t\tz-index: 0;\n\t\t}\n\t}\n\n\t& > .ck.ck-dropdown {\n\t\t& > .ck.ck-button.ck-input-color__button {\n\t\t\tpadding: 0;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-right: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.ck-disabled {\n\t\t\t\tbackground: var(--ck-color-input-disabled-background);\n\t\t\t}\n\n\t\t\t& > .ck.ck-input-color__button__preview {\n\t\t\t\t@mixin ck-rounded-corners;\n\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--ck-color-input-border);\n\n\t\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\t\ttop: -30%;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\theight: 150%;\n\t\t\t\t\twidth: 8%;\n\t\t\t\t\tbackground: hsl(0, 100%, 50%);\n\t\t\t\t\tborder-radius: 2px;\n\t\t\t\t\ttransform: rotate(45deg);\n\t\t\t\t\ttransform-origin: 50%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__remove-color {\n\t\twidth: 100%;\n\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-bottom: 1px solid var(--ck-color-input-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t}\n\n\t\t& .ck.ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: 0;\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6369: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/form.css", ], names: [], mappings: "AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form {\n\tpadding: 0 0 var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t& .ck.ck-input-text {\n\t\tmin-width: 100%;\n\t\twidth: 0;\n\t}\n\n\t& .ck.ck-dropdown {\n\t\tmin-width: 100%;\n\n\t\t& .ck-dropdown__button {\n\t\t\t&:not(:focus) {\n\t\t\t\tborder: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck-button__label {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 637: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css", ], names: [], mappings: "AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CAvBE,6CAEE,mCAMF,CARA,6CAME,oCAEF,CAGD,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\tflex-grow: 1;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-form__row {\n\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\t& + * {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-label {\n\t\twidth: 100%;\n\t\tmin-width: 100%;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 1710: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label,.ck[dir=rtl] .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}@media (prefers-reduced-motion:reduce){.ck .ck-insert-table-dropdown-grid-box{transition:none}}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css", ], names: [], mappings: "AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAGC,yFAA0F,CAD1F,oJAED,CAEA,mFAEC,iBACD,CAEA,uCAIC,4CAA6C,CAC7C,iBAAkB,CAFlB,iDAAkD,CADlD,qDAAsD,CADtD,mDAAoD,CAKpD,YAAa,CACb,eAcD,CAZC,uCATD,uCAUE,eAWF,CAVC,CAEA,6CACC,eACD,CAEA,6CAEC,6CAA8C,CAD9C,yCAED", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-insert-table-dropdown__grid {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-insert-table-dropdown-padding: 10px;\n\t--ck-insert-table-dropdown-box-height: 11px;\n\t--ck-insert-table-dropdown-box-width: 12px;\n\t--ck-insert-table-dropdown-box-margin: 1px;\n}\n\n.ck .ck-insert-table-dropdown__grid {\n\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\n\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\n\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\n}\n\n.ck .ck-insert-table-dropdown__label,\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\n\ttext-align: center;\n}\n\n.ck .ck-insert-table-dropdown-grid-box {\n\tmin-width: var(--ck-insert-table-dropdown-box-width);\n\tmin-height: var(--ck-insert-table-dropdown-box-height);\n\tmargin: var(--ck-insert-table-dropdown-box-margin);\n\tborder: 1px solid var(--ck-color-base-border);\n\tborder-radius: 1px;\n\toutline: none;\n\ttransition: none;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:focus {\n\t\tbox-shadow: none;\n\t}\n\n\t&.ck-on {\n\t\tborder-color: var(--ck-color-focus-border);\n\t\tbackground: var(--ck-color-focus-outer-shadow);\n\t}\n}\n\n", ], sourceRoot: "", }, ]); const c = a; }, 2259: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/table.css", ], names: [], mappings: "AAKA,mBAKC,aAAc,CADd,gBAiCD,CA9BC,yBAYC,yBAAkC,CAVlC,wBAAyB,CACzB,gBAAiB,CAKjB,WAAY,CADZ,UAsBD,CAfC,wDAQC,wBAAiC,CANjC,aAAc,CACd,YAMD,CAEA,4BAEC,0BAA+B,CAD/B,eAED,CAMF,+BACC,gBACD,CAEA,+BACC,eACD,CAEA,+CAKC,oBAAqB,CAMrB,UACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .table {\n\t/* Give the table widget some air and center it horizontally */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em auto;\n\tdisplay: table;\n\n\t& table {\n\t\t/* The table cells should have slight borders */\n\t\tborder-collapse: collapse;\n\t\tborder-spacing: 0;\n\n\t\t/* Table width and height are set on the parent
. Make sure the table inside stretches\n\t\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t/* The outer border of the table should be slightly darker than the inner lines.\n\t\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\n\t\tborder: 1px double hsl(0, 0%, 70%);\n\n\t\t& td,\n\t\t& th {\n\t\t\tmin-width: 2em;\n\t\t\tpadding: .4em;\n\n\t\t\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it\'s not necessary here.\n\t\t\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\n\t\t\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\n\t\t\tborder: 1px solid hsl(0, 0%, 75%);\n\t\t}\n\n\t\t& th {\n\t\t\tfont-weight: bold;\n\t\t\tbackground: hsla(0, 0%, 0%, 5%);\n\t\t}\n\t}\n}\n\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\n.ck-content[dir="rtl"] .table th {\n\ttext-align: right;\n}\n\n.ck-content[dir="ltr"] .table th {\n\ttext-align: left;\n}\n\n.ck-editor__editable .ck-table-bogus-paragraph {\n\t/*\n\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\n\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\n\t */\n\tdisplay: inline-block;\n\n\t/*\n\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\n\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\n\t */\n\twidth: 100%;\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 5513: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-selector-caption-background:#f7f7f7;--ck-color-selector-caption-text:#333;--ck-color-selector-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-selector-caption-background);caption-side:top;color:var(--ck-color-selector-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}@media (forced-colors:active){.ck-content .table>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-selector-caption-highlighted-background)}to{background-color:var(--ck-color-selector-caption-background)}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecaption.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css", ], names: [], mappings: "AAOA,MACC,8CAAuD,CACvD,qCAAiD,CACjD,uDACD,CAGA,8BAMC,4DAA6D,CAJ7D,gBAAiB,CAGjB,2CAA4C,CAJ5C,qBAAsB,CAOtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,iBAAkB,CADlB,qBAaD,CCxBC,8BACC,8BDoBA,sBAAuB,CACvB,WCnBA,CACD,CAIA,4BDqBC,qEACC,iDACD,CCnBD,CDsBA,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAGD,sCACC,GACC,wEACD,CAEA,GACC,4DACD,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .table > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: top;\n\tword-break: break-word;\n\ttext-align: center;\n\tcolor: var(--ck-color-selector-caption-text);\n\tbackground-color: var(--ck-color-selector-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\n\t@mixin ck-media-forced-colors {\n\t\tbackground-color: unset;\n\t\tcolor: unset;\n\t}\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .table > figcaption {\n\t@mixin ck-media-default-colors {\n\t\t&.table__caption_highlighted {\n\t\t\tanimation: ck-table-caption-highlight .6s ease-out;\n\t\t}\n\t}\n\n\t&.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the table caption placeholder doesn\'t overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n@keyframes ck-table-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-selector-caption-background);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 472: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css", ], names: [], mappings: "AAOE,6FACC,cAiBD,CAdE,0HAEC,cACD,CAEA,yHAEC,cACD,CAEA,uHACC,WACD,CClBJ,kCACC,WAkBD,CAfE,2FACC,mBAAoB,CACpB,SAAU,CACV,SACD,CAGC,4GACC,eAAgB,CAGhB,qCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\t&:first-of-type {\n\t\t\t\t\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\n\t\t\t\t\tflex-grow: 0.57;\n\t\t\t\t}\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\n\t\t\t\t\tflex-grow: 0.43;\n\t\t\t\t}\n\n\t\t\t\t& .ck-button {\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__padding-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\t\t\twidth: 25%;\n\t\t}\n\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9317: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-selector-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{overflow-wrap:break-word;position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:0;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:0;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-selector-column-resizer-hover);bottom:-999999px;opacity:.25;top:-999999px}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecolumnresize.css", ], names: [], mappings: "AAKA,MACC,oEAAqE,CACrE,mCAAoC,CAIpC,iGACD,CAEA,qCACC,kBACD,CAEA,yBACC,eACD,CAEA,4CAIC,wBAAyB,CACzB,iBACD,CAEA,wDAGC,QAAS,CAGT,iBAAkB,CALlB,iBAAkB,CAGlB,oDAAqD,CAFrD,KAAM,CAKN,gBAAiB,CAFjB,0CAA2C,CAG3C,2BACD,CAQA,qJACC,YACD,CAEA,8HAEC,8DAA+D,CAO/D,gBAAiB,CANjB,WAAa,CAKb,aAED,CAEA,iEACC,mDAAoD,CACpD,WACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\n\t--ck-table-column-resizer-width: 7px;\n\n\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\n\t The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\n\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\n}\n\n.ck-content .table .ck-table-resized {\n\ttable-layout: fixed;\n}\n\n.ck-content .table table {\n\toverflow: hidden;\n}\n\n.ck-content .table td,\n.ck-content .table th {\n\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\n\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\n\toverflow-wrap: break-word;\n\tposition: relative;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: var(--ck-table-column-resizer-position-offset);\n\twidth: var(--ck-table-column-resizer-width);\n\tcursor: col-resize;\n\tuser-select: none;\n\tz-index: var(--ck-z-default);\n}\n\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\n all resizers must be hidden while the table is dragged. */\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\n\tbackground-color: var(--ck-color-selector-column-resizer-hover);\n\topacity: 0.25;\n\t/* The resizer element resides in each cell so to occupy the entire height of the table, which is unknown from a CSS point of view,\n\t it is extended to an extremely high height. Even for screens with a very high pixel density, the resizer will fulfill its role as\n\t it should, i.e. for a screen of 476 ppi the total height of the resizer will take over 350 sheets of A4 format, which is totally\n\t unrealistic height for a single table. */\n\ttop: -999999px;\n\tbottom: -999999px;\n}\n\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\n\tleft: var(--ck-table-column-resizer-position-offset);\n\tright: unset;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9431: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-selector-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-selector-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css", ], names: [], mappings: "AAKA,MACC,gEACD,CAKE,8QAGC,2DAA4D,CAK5D,iBAAkB,CAClB,8CAA+C,CAC/C,mBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\n}\n\n.ck-widget.table {\n\t& td,\n\t& th {\n\t\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\n\t\t&.ck-editor__nested-editable:focus {\n\t\t\t/* A very slight background to highlight the focused cell */\n\t\t\tbackground: var(--ck-color-selector-focused-cell-background);\n\n\t\t\t/* Fixes the problem where surrounding cells cover the focused cell's border.\n\t\t\tIt does not fix the problem in all places but the UX is improved.\n\t\t\tSee https://github.com/ckeditor/ckeditor5-table/issues/29. */\n\t\t\tborder-style: none;\n\t\t\toutline: 1px solid var(--ck-color-focus-border);\n\t\t\toutline-offset: -1px; /* progressive enhancement - no IE support */\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7181: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}@media (prefers-reduced-motion:reduce){.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:none}}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAWE,wHACC,cACD,CAEA,8DAEC,kBAAmB,CADnB,cAgBD,CAbC,qFAGC,kBAAmB,CAFnB,YAAa,CACb,6BAMD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EAGC,2DAAgE,CADhE,QAAS,CADT,iBAAkB,CAGlB,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CAGX,QAAS,CAFT,iBAAkB,CAClB,wDAA6D,CAE7D,0BACD,CChDH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,8KAIC,cAAe,CADf,cAAe,CADf,UAGD,CAGD,8DACC,SAcD,CAZC,yMAEC,QACD,CAEA,iGACC,mBAAoB,CACpB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAIF,4CACC,sCA6BD,CA3BC,8ECxCD,eD6DC,CArBA,mMCpCA,qCDyDA,CArBA,8EAGC,qCAAsC,CACtC,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAcD,CAXC,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAdD,8EAgBC,iEAKD,CAHC,uCAlBD,8EAmBE,cAEF,CADC,CAID,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__background-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tflex-wrap: wrap;\n\t\t\talign-items: center;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column-reverse;\n\t\t\t\talign-items: center;\n\n\t\t\t\t& .ck.ck-dropdown {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\t/* Allow absolute positioning of the status (error) balloons. */\n\t\tposition: relative;\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\ttransform: translate(-50%,100%);\n\n\t\t\t/* Make sure the balloon status stays on top of other form elements. */\n\t\t\tz-index: 1;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX( -50% );\n\t\t\t}\n\t\t}\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_rounded.css";\n\n:root {\n\t--ck-table-properties-error-arrow-size: 6px;\n\t--ck-table-properties-min-error-width: 150px;\n}\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\t& > .ck-label {\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-style,\n\t\t\t& .ck-table-form__border-width {\n\t\t\t\twidth: 80px;\n\t\t\t\tmin-width: 80px;\n\t\t\t\tmax-width: 80px;\n\t\t\t}\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tpadding: 0;\n\n\t\t\t& .ck-table-form__dimensions-row__width,\n\t\t\t& .ck-table-form__dimensions-row__height {\n\t\t\t\tmargin: 0\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\talign-self: flex-end;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: var(--ck-ui-component-min-height);\n\t\t\t\tline-height: var(--ck-ui-component-min-height);\n\t\t\t\tmargin: 0 var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: var(--ck-spacing-standard);\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\t@mixin ck-rounded-corners;\n\n\t\t\tbackground: var(--ck-color-base-error);\n\t\t\tcolor: var(--ck-color-base-background);\n\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\t\tmin-width: var(--ck-table-properties-min-error-width);\n\t\t\ttext-align: center;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\n\t\t\t\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\n\t\t\t\tborder: 1px;\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\n\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\tanimation: none;\n\t\t\t}\n\t\t}\n\n\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\n\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n@keyframes ck-table-form-labeled-view-status-appear {\n\t0% {\n\t\topacity: 0;\n\t}\n\n\t100% {\n\t\topacity: 1;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8252: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css", ], names: [], mappings: "AAOE,mFAGC,sBAAuB,CADvB,YAAa,CADb,cAOD,CAHC,qHACC,gBACD,CCTH,6BACC,WAmBD,CAhBE,mFACC,mBAAoB,CACpB,SAYD,CAVC,kGACC,eAAgB,CAGhB,qCAKD,CAHC,uHACC,UACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\t\t\tflex-basis: 0;\n\t\t\talign-content: baseline;\n\n\t\t\t& .ck.ck-toolbar .ck-toolbar__items {\n\t\t\t\tflex-wrap: nowrap;\n\t\t\t}\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t\t\t& .ck-toolbar__items > * {\n\t\t\t\t\twidth: 40px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1125: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css", ], names: [], mappings: "AAKA,MACC,wDACD,CAGC,0IAKC,gBAAiB,CAFjB,uBAAwB,CACxB,aAAc,CAFd,iBAiCD,CA3BC,sJAGC,yDAA0D,CAK1D,QAAS,CAPT,UAAW,CAKX,MAAO,CAJP,mBAAoB,CAEpB,iBAAkB,CAGlB,OAAQ,CAFR,KAID,CAEA,wTAEC,4BACD,CAMA,gKACC,aAKD,CAHC,0NACC,YACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\n}\n\n.ck.ck-editor__editable .table table {\n\t& td.ck-editor__editable_selected,\n\t& th.ck-editor__editable_selected {\n\t\tposition: relative;\n\t\tcaret-color: transparent;\n\t\toutline: unset;\n\t\tbox-shadow: unset;\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tpointer-events: none;\n\t\t\tbackground-color: var(--ck-table-selected-cell-background);\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t& ::selection,\n\t\t&:focus {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t/*\n\t\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\n\t\t */\n\t\t& .ck-widget {\n\t\t\toutline: unset;\n\n\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1587: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-aria-live-announcer{left:-10000px;position:absolute;top:-10000px}.ck.ck-aria-live-region-list{list-style-type:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css", ], names: [], mappings: "AAKA,2BAEC,aAAc,CADd,iBAAkB,CAElB,YACD,CAEA,6BACC,oBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-aria-live-announcer {\n\tposition: absolute;\n\tleft: -10000px;\n\ttop: -10000px;\n}\n\n.ck.ck-aria-live-region-list {\n\tlist-style-type: none;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5169: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-autocomplete{position:relative}.ck.ck-autocomplete>.ck-search__results{position:absolute;z-index:var(--ck-z-panel)}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{bottom:100%}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{bottom:auto;top:100%}.ck.ck-autocomplete>.ck-search__results{border-radius:0}.ck-rounded-corners .ck.ck-autocomplete>.ck-search__results,.ck.ck-autocomplete>.ck-search__results.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-autocomplete>.ck-search__results{background:var(--ck-color-base-background);border:1px solid var(--ck-color-dropdown-panel-border);box-shadow:var(--ck-drop-shadow),0 0;max-height:200px;min-width:auto;overflow-y:auto}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-1px}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/autocomplete/autocomplete.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/autocomplete/autocomplete.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAKA,oBACC,iBAeD,CAbC,wCACC,iBAAkB,CAClB,yBAUD,CARC,6DACC,WACD,CAEA,6DAEC,WAAY,CADZ,QAED,CCVD,wCCEA,eDuBA,CAzBA,uHCMC,qCDmBD,CAzBA,wCAMC,0CAA2C,CAC3C,sDAAuD,CEPxD,oCAA8B,CFI7B,gBAAiB,CAIjB,cAAe,CAHf,eAoBD,CAfC,6DACC,2BAA4B,CAC5B,4BAA6B,CAG7B,kBACD,CAEA,6DACC,wBAAyB,CACzB,yBAA0B,CAG1B,eACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-autocomplete {\n\tposition: relative;\n\n\t& > .ck-search__results {\n\t\tposition: absolute;\n\t\tz-index: var(--ck-z-panel);\n\n\t\t&.ck-search__results_n {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-search__results_s {\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css";\n\n.ck.ck-autocomplete {\n\t& > .ck-search__results {\n\t\t@mixin ck-rounded-corners;\n\t\t@mixin ck-drop-shadow;\n\n\t\tmax-height: 200px;\n\t\toverflow-y: auto;\n\t\tbackground: var(--ck-color-base-background);\n\t\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\t\tmin-width: auto;\n\n\t\t&.ck-search__results_n {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\n\t\t\tmargin-bottom: -1px;\n\t\t}\n\n\t\t&.ck-search__results_s {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-top-right-radius: 0;\n\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\n\t\t\tmargin-top: -1px;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8941: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}[dir=ltr] .ck.ck-button,[dir=ltr] a.ck.ck-button{justify-content:left}[dir=rtl] .ck.ck-button,[dir=rtl] a.ck.ck-button{justify-content:right}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}@media (prefers-reduced-motion:reduce){.ck.ck-button,a.ck.ck-button{transition:none}}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{opacity:.5}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css", ], names: [], mappings: "AAQA,6BAMC,kBAAmB,CADnB,mBAAoB,CADpB,iBAAkB,CCHlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD0BD,CA9BA,iDASE,oBAqBF,CA9BA,iDAaE,qBAiBF,CAdC,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CEzBD,6BCAC,oDD+ID,CC5IE,6EACC,0DACD,CAEA,+EACC,2DACD,CAID,qDACC,6DACD,CDfD,6BEDC,eFgJD,CA/IA,wIEGE,qCF4IF,CA/IA,6BA6BC,uBAAwB,CANxB,4BAA6B,CAjB7B,cAAe,CAcf,iBAAkB,CAHlB,aAAc,CAJd,4CAA6C,CAD7C,2CAA4C,CAJ5C,8BAA+B,CAC/B,iBAAkB,CAiBlB,4DAA8D,CAnB9D,qBAAsB,CAFtB,kBA0ID,CAhHC,uCA/BD,6BAgCE,eA+GF,CA9GC,CAEA,oFGpCA,2BAA2B,CCF3B,2CAA8B,CDC9B,YHyCA,CAIC,kJAEC,aACD,CAGD,iEAIC,aAAc,CACd,cAAe,CAHf,iBAAkB,CAClB,mBAAoB,CAMpB,qBASD,CAlBA,qFAYE,eAMF,CAlBA,qFAgBE,gBAEF,CAEA,yEACC,aAWD,CAZA,6FAIE,mCAQF,CAZA,6FAQE,oCAIF,CAZA,yEAWC,UACD,CAIC,oIIxFD,oDJ4FC,CAOA,gLKnGD,kCLqGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAcD,CAXC,2HAEE,4CAA+C,CAC/C,oCAOF,CAVA,2HAQE,mCAAoC,CADpC,6CAGF,CAKA,mHACC,WACD,CAID,yCClIA,+CDsIA,CCnIC,yFACC,qDACD,CAEA,2FACC,sDACD,CAID,iEACC,wDACD,CDmHA,yCAGC,qCACD,CAEA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CClJC,mDDuJD,CCpJE,2FACC,yDACD,CAEA,6FACC,0DACD,CAID,mEACC,4DACD,CDmID,2CAIC,wCACD,CAEA,uCAEC,eACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n@import "../../mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-unselectable;\n\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\n\t@mixin ck-dir ltr {\n\t\tjustify-content: left;\n\t}\n\n\t@mixin ck-dir rtl {\n\t\tjustify-content: right;\n\t}\n\n\t& .ck-button__label {\n\t\tdisplay: none;\n\t}\n\n\t&.ck-button_with-text {\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t/* Center the icon horizontally in a button without text. */\n\t&:not(.ck-button_with-text) {\n\t\tjustify-content: center;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-button-colors --ck-color-button-default;\n\t@mixin ck-rounded-corners;\n\n\twhite-space: nowrap;\n\tcursor: default;\n\tvertical-align: middle;\n\tpadding: var(--ck-spacing-tiny);\n\ttext-align: center;\n\n\t/* A very important piece of styling. Go to variable declaration to learn more. */\n\tmin-width: var(--ck-ui-component-min-height);\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Normalize the height of the line. Removing this will break consistent height\n\tamong text and text-less buttons (with icons). */\n\tline-height: 1;\n\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t/* Avoid flickering when the foucs border shows up. */\n\tborder: 1px solid transparent;\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\n\t-webkit-appearance: none;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:active,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t/* Allow icon coloring using the text "color" property. */\n\t& .ck-button__icon {\n\t\t& use,\n\t\t& use * {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t& .ck-button__label {\n\t\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\t\tfont-size: inherit;\n\t\tfont-weight: inherit;\n\t\tcolor: inherit;\n\t\tcursor: inherit;\n\n\t\t/* Must be consistent with .ck-icon\'s vertical align. Otherwise, buttons with and\n\t\twithout labels (but with icons) have different sizes in Chrome */\n\t\tvertical-align: middle;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& .ck-button__keystroke {\n\t\tcolor: inherit;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t}\n\n\t\topacity: .5;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t&.ck-disabled {\n\t\t&:active,\n\t\t&:focus {\n\t\t\t/* The disabled button should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t\t& .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t& .ck-button__keystroke {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&.ck-button_with-text {\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-button_with-keystroke {\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t/* A style of the button which is currently on, e.g. its feature is active. */\n\t&.ck-on {\n\t\t@mixin ck-button-colors --ck-color-button-on;\n\n\t\tcolor: var(--ck-color-button-on-color);\n\t}\n\n\t&.ck-button-save {\n\t\tcolor: var(--ck-color-button-save);\n\t}\n\n\t&.ck-button-cancel {\n\t\tcolor: var(--ck-color-button-cancel);\n\t}\n}\n\n/* A style of the button which handles the primary action. */\n.ck.ck-button-action,\na.ck.ck-button-action {\n\t@mixin ck-button-colors --ck-color-button-action;\n\n\tcolor: var(--ck-color-button-action-text);\n}\n\n.ck.ck-button-bold,\na.ck.ck-button-bold {\n\tfont-weight: bold;\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements a button of given background color.\n *\n * @param {String} $background - Background color of the button.\n * @param {String} $border - Border color of the button.\n */\n@define-mixin ck-button-colors $prefix {\n\tbackground: var($(prefix)-background);\n\n\t&:not(.ck-disabled) {\n\t\t&:hover {\n\t\t\tbackground: var($(prefix)-hover-background);\n\t\t}\n\n\t\t&:active {\n\t\t\tbackground: var($(prefix)-active-background);\n\t\t}\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t&.ck-disabled {\n\t\tbackground: var($(prefix)-disabled-background);\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8613: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton,.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton.ck-on:focus,.ck.ck-button.ck-switchbutton.ck-on:hover,.ck.ck-button.ck-switchbutton:active,.ck.ck-button.ck-switchbutton:focus,.ck.ck-button.ck-switchbutton:hover{background:transparent;color:inherit}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}@media (prefers-reduced-motion:reduce){.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{transition:none}}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css", ], names: [], mappings: "AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,0DAAgE,CAChE,2HAIC,CACD,0FACD,CAOC,0QAEC,sBAAuB,CADvB,aAED,CAEA,0DAGE,4CAOF,CAVA,0DAQE,2CAEF,CAEA,iDCpCA,eDgFA,CA5CA,yIChCC,qCD4ED,CA5CA,2DAKE,gBAuCF,CA5CA,2DAUE,iBAkCF,CA5CA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CAD7B,iFAAsF,CAEtF,0CA2BD,CAxBC,2ECxDD,eDuEC,CAfA,6LCpDA,qCAAsC,CDsDpC,8CAaF,CAfA,2EAOC,yDAA0D,CAD1D,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAUD,CAHC,uCAZD,2EAaE,eAEF,CADC,CAGD,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DEpFA,kCFsFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CAEA,2FAKE,2DAMF,CAXA,2FASE,oEAEF", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-button.ck-switchbutton {\n\t& .ck-button__toggle {\n\t\tdisplay: block;\n\n\t\t& .ck-button__toggle__inner {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\nof the component, floating–point numbers have been used which, for the default font size\n(see: --ck-font-size-base), will generate simple integers. */\n:root {\n\t/* 34px at 13px font-size */\n\t--ck-switch-button-toggle-width: 2.6153846154em;\n\t/* 14px at 13px font-size */\n\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\n\t--ck-switch-button-translation: calc(\n\t\tvar(--ck-switch-button-toggle-width) -\n\t\tvar(--ck-switch-button-toggle-inner-size) -\n\t\t2px /* Border */\n\t);\n\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\n}\n\n.ck.ck-button.ck-switchbutton {\n\t/* Unlike a regular button, the switch button text color and background should never change.\n\t * Changing toggle switch (background, outline) is enough to carry the information about the\n\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\n\t */\n\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\n\t\tcolor: inherit;\n\t\tbackground: transparent;\n\t}\n\n\t& .ck-button__label {\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-right: calc(2 * var(--ck-spacing-large));\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-left: calc(2 * var(--ck-spacing-large));\n\t\t}\n\t}\n\n\t& .ck-button__toggle {\n\t\t@mixin ck-rounded-corners;\n\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Make sure the toggle is always to the right as far as possible. */\n\t\t\tmargin-left: auto;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Make sure the toggle is always to the left as far as possible. */\n\t\t\tmargin-right: auto;\n\t\t}\n\n\t\t/* Apply some smooth transition to the box-shadow and border. */\n\t\t/* Gently animate the background color of the toggle switch */\n\t\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\n\t\tborder: 1px solid transparent;\n\t\twidth: var(--ck-switch-button-toggle-width);\n\t\tbackground: var(--ck-color-switch-button-off-background);\n\n\t\t& .ck-button__toggle__inner {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-radius: calc(.5 * var(--ck-border-radius));\n\t\t\t}\n\n\t\t\twidth: var(--ck-switch-button-toggle-inner-size);\n\t\t\theight: var(--ck-switch-button-toggle-inner-size);\n\t\t\tbackground: var(--ck-color-switch-button-inner-background);\n\n\t\t\t/* Gently animate the inner part of the toggle switch */\n\t\t\ttransition: all 300ms ease;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-switch-button-off-hover-background);\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-button__toggle {\n\t\t@mixin ck-disabled;\n\t}\n\n\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\n\t&:focus {\n\t\tborder-color: transparent;\n\t\toutline: none;\n\t\tbox-shadow: none;\n\n\t\t& .ck-button__toggle {\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\n\t\t\toutline-offset: 1px;\n\t\t\toutline: var(--ck-focus-ring);\n\t\t}\n\t}\n\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-on {\n\t\t& .ck-button__toggle {\n\t\t\tbackground: var(--ck-color-switch-button-on-background);\n\n\t\t\t&:hover {\n\t\t\t\tbackground: var(--ck-color-switch-button-on-hover-background);\n\t\t\t}\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\t/*\n\t\t\t\t* Move the toggle switch to the right. It will be animated.\n\t\t\t\t*/\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\ttransform: translateX( var( --ck-switch-button-translation ) );\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3283: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;color:inherit;font-weight:700;padding:var(--ck-list-button-padding);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/collapsible/collapsible.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/collapsible/collapsible.css", ], names: [], mappings: "AAMC,sEACC,YACD,CCHD,MACC,yDACD,CAGC,iCAIC,eAAgB,CAChB,aAAc,CAHd,eAAiB,CACjB,qCAAsC,CAFtC,UAoBD,CAdC,uCACC,sBACD,CAEA,wIACC,sBAAuB,CACvB,wBAAyB,CACzB,eACD,CAEA,0CACC,qCAAsC,CACtC,sCACD,CAGD,6CACC,gFACD,CAGC,mEACC,wBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-collapsible.ck-collapsible_collapsed {\n\t& > .ck-collapsible__children {\n\t\tdisplay: none;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-collapsible {\n\t& > .ck.ck-button {\n\t\twidth: 100%;\n\t\tfont-weight: bold;\n\t\tpadding: var(--ck-list-button-padding);\n\t\tborder-radius: 0;\n\t\tcolor: inherit;\n\n\t\t&:focus {\n\t\t\tbackground: transparent;\n\t\t}\n\n\t\t&:active, &:not(:focus), &:hover:not(:focus) {\n\t\t\tbackground: transparent;\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t& > .ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t\twidth: var(--ck-collapsible-arrow-size);\n\t\t}\n\t}\n\n\t& > .ck-collapsible__children {\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large);\n\t}\n\n\t&.ck-collapsible_collapsed {\n\t\t& > .ck.ck-button .ck-icon {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 4239: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{transition:box-shadow .2s ease}@media (forced-colors:none){.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile.ck-color-selector__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}}@media (forced-colors:active){.ck.ck-color-grid__tile{height:unset;min-height:unset;min-width:unset;padding:0 var(--ck-spacing-small);width:unset}.ck.ck-color-grid__tile .ck-button__label{display:inline-block}}@media (prefers-reduced-motion:reduce){.ck.ck-color-grid__tile{transition:none}}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css", ], names: [], mappings: "AAKA,kBACC,YACD,CCCA,MACC,8BAA+B,CAK/B,wCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBACC,8BAkED,CC3EC,4BACC,wBDgBA,QAAS,CAJT,qCAAsC,CAEtC,yCAA0C,CAD1C,wCAAyC,CAEzC,SAAU,CAJV,oCCTA,CDgBA,8HAIC,QACD,CAEA,+DACC,gDACD,CAEA,8BACC,8FACD,CAEA,gGAEC,iGACD,CCjCD,CAZA,8BACC,wBDqDA,YAAa,CAEb,gBAAiB,CADjB,eAAgB,CAEhB,iCAAkC,CAJlC,WClDA,CDwDA,0CACC,oBACD,CCzDD,CD4DA,uCAhDD,wBAiDE,eAkBF,CAjBC,CAEA,oCACC,YAAa,CACb,gBACD,CAEA,oCAEC,2CAA4C,CAD5C,YAED,CAGC,0CACC,aACD,CAIF,yBACC,oCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-color-grid {\n\tdisplay: grid;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-grid-tile-size: 24px;\n\n\t/* Not using global colors here because these may change but some colors in a pallette\n\t * require special treatment. For instance, this ensures no matter what the UI text color is,\n\t * the check icon will look good on the black color tile. */\n\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\n}\n\n.ck.ck-color-grid {\n\tgrid-gap: 5px;\n\tpadding: 8px;\n}\n\n.ck.ck-color-grid__tile {\n\ttransition: .2s ease box-shadow;\n\n\t@mixin ck-media-default-colors {\n\t\twidth: var(--ck-color-grid-tile-size);\n\t\theight: var(--ck-color-grid-tile-size);\n\t\tmin-width: var(--ck-color-grid-tile-size);\n\t\tmin-height: var(--ck-color-grid-tile-size);\n\t\tpadding: 0;\n\t\tborder: 0;\n\n\t\t&.ck-on,\n\t\t&:focus:not( .ck-disabled ),\n\t\t&:hover:not( .ck-disabled ) {\n\t\t\t/* Disable the default .ck-button\'s border ring. */\n\t\t\tborder: 0;\n\t\t}\n\n\t\t&.ck-color-selector__color-tile_bordered {\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\n\t\t}\n\n\t\t&:focus:not( .ck-disabled ),\n\t\t&:hover:not( .ck-disabled ) {\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t\t}\n\t}\n\n\t/*\n\t * In high contrast mode, the colors are replaced with text labels.\n\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t */\n\t@mixin ck-media-forced-colors {\n\t\twidth: unset;\n\t\theight: unset;\n\t\tmin-width: unset;\n\t\tmin-height: unset;\n\t\tpadding: 0 var(--ck-spacing-small);\n\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&.ck-disabled {\n\t\tcursor: unset;\n\t\ttransition: unset;\n\t}\n\n\t& .ck.ck-icon {\n\t\tdisplay: none;\n\t\tcolor: var(--ck-color-color-grid-check-icon);\n\t}\n\n\t&.ck-on {\n\t\t& .ck.ck-icon {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.ck.ck-color-grid__label {\n\tpadding: 0 var(--ck-spacing-standard);\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3019: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".color-picker-hex-input{width:max-content}.color-picker-hex-input .ck.ck-input{min-width:unset}.ck.ck-color-picker__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:var(--ck-spacing-large) 0 0;width:unset}.ck.ck-color-picker__row .ck.ck-labeled-field-view{padding-top:unset}.ck.ck-color-picker__row .ck.ck-input-text{width:unset}.ck.ck-color-picker__row .ck-color-picker__hash-view{padding-right:var(--ck-spacing-medium);padding-top:var(--ck-spacing-tiny)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css", ], names: [], mappings: "AAKA,wBACC,iBAKD,CAHC,qCACC,eACD,CAGD,yBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAC9B,kCAAmC,CACnC,WAcD,CAZC,mDACC,iBACD,CAEA,2CACC,WACD,CAEA,qDAEC,sCAAuC,CADvC,kCAED", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.color-picker-hex-input {\n\twidth: max-content;\n\n\t& .ck.ck-input {\n\t\tmin-width: unset;\n\t}\n}\n\n.ck.ck-color-picker__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\tmargin: var(--ck-spacing-large) 0 0;\n\twidth: unset;\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: unset;\n\t}\n\n\t& .ck.ck-input-text {\n\t\twidth: unset;\n\t}\n\n\t& .ck-color-picker__hash-view {\n\t\tpadding-top: var(--ck-spacing-tiny);\n\t\tpadding-right: var(--ck-spacing-medium);\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 2927: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{align-items:center;display:flex}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{justify-content:flex-start}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{display:flex;flex-direction:row;justify-content:space-around}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel,.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save{flex:1}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{width:100%}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-left:var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label{font-weight:unset}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker{padding:8px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker{height:100px;min-width:180px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation){border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue){border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius)}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer),.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer){height:15px;width:15px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{padding:0 8px 8px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorselector/colorselector.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css", ], names: [], mappings: "AAUE,oLAGC,kBAAmB,CADnB,YAMD,CARA,wMAME,0BAEF,CAKA,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CCrBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CAEA,gHAEE,uCAMF,CARA,gHAME,sCAEF,CAGD,6EACC,iBACD,CAKA,oEACC,WAoBD,CAlBC,sFACC,YAAa,CACb,eAeD,CAbC,wGACC,iEACD,CAEA,iGACC,iEACD,CAEA,yNAGC,WAAY,CADZ,UAED,CAIF,iFACC,iBACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tjustify-content: space-around;\n\n\t\t\t& .ck-button-save,\n\t\t\t& .ck-button-cancel {\n\t\t\t\tflex: 1\n\t\t\t}\n\t\t}\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck.ck-icon {\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tmargin-right: var(--ck-spacing-standard);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& label.ck.ck-color-grid__label {\n\t\t\tfont-weight: unset;\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-picker {\n\t\t\tpadding: 8px;\n\n\t\t\t& .hex-color-picker {\n\t\t\t\theight: 100px;\n\t\t\t\tmin-width: 180px;\n\n\t\t\t\t&::part(saturation) {\n\t\t\t\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\t\t\t\t}\n\n\t\t\t\t&::part(hue) {\n\t\t\t\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\n\t\t\t\t}\n\n\t\t\t\t&::part(saturation-pointer),\n\t\t\t\t&::part(hue-pointer) {\n\t\t\t\t\twidth: 15px;\n\t\t\t\t\theight: 15px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tpadding: 0 8px 8px;\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 7197: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-dialog-overlay{bottom:0;left:0;overscroll-behavior:none;position:fixed;right:0;top:0;user-select:none}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent{animation:none;background:none;pointer-events:none}.ck.ck-dialog{overscroll-behavior:none;position:absolute;width:fit-content}.ck.ck-dialog .ck.ck-form__header{flex-shrink:0}.ck.ck-dialog .ck.ck-form__header .ck-form__header__label{cursor:grab}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent .ck.ck-dialog{pointer-events:all}:root{--ck-dialog-overlay-background-color:rgba(0,0,0,.5);--ck-dialog-drop-shadow:0px 0px 6px 2px rgba(0,0,0,.15);--ck-dialog-max-width:100vw;--ck-dialog-max-height:90vh;--ck-color-dialog-background:var(--ck-color-base-background);--ck-color-dialog-form-header-border:var(--ck-color-base-border)}.ck.ck-dialog-overlay{animation:ck-dialog-fade-in .3s;background:var(--ck-dialog-overlay-background-color);z-index:var(--ck-z-dialog)}.ck.ck-dialog{border-radius:0}.ck-rounded-corners .ck.ck-dialog,.ck.ck-dialog.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dialog{--ck-drop-shadow:var(--ck-dialog-drop-shadow);background:var(--ck-color-dialog-background);border:1px solid var(--ck-color-base-border);box-shadow:var(--ck-drop-shadow),0 0;max-height:var(--ck-dialog-max-height);max-width:var(--ck-dialog-max-width)}.ck.ck-dialog .ck.ck-form__header{border-bottom:1px solid var(--ck-color-dialog-form-header-border)}@keyframes ck-dialog-fade-in{0%{background:transparent}to{background:var(--ck-dialog-overlay-background-color)}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialog.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialog.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAKA,sBAKC,QAAS,CACT,MAAO,CAJP,wBAAyB,CAEzB,cAAe,CAGf,OAAQ,CACR,KAAM,CAPN,gBAcD,CALC,qDAEC,cAAe,CACf,eAAgB,CAFhB,mBAGD,CAGD,cACC,wBAAyB,CAEzB,iBAAkB,CADlB,iBAcD,CAXC,kCACC,aAKD,CAHC,0DACC,WACD,CAVF,mEAcE,kBAEF,CC7BA,MACC,mDAA2D,CAC3D,uDAA8D,CAC9D,2BAA4B,CAC5B,2BAA4B,CAC5B,4DAA6D,CAC7D,gEACD,CAEA,sBACC,+BAAgC,CAChC,oDAAqD,CACrD,0BACD,CAEA,cCbC,eD2BD,CAdA,mECTE,qCDuBF,CAdA,cAIC,6CAA8C,CAE9C,4CAA6C,CAG7C,4CAA6C,CExB7C,oCAA8B,CFsB9B,sCAAuC,CACvC,oCAMD,CAHC,kCACC,iEACD,CAGD,6BACC,GACC,sBACD,CAEA,GACC,oDACD,CACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-dialog-overlay {\n\tuser-select: none;\n\toverscroll-behavior: none;\n\n\tposition: fixed;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\n\t&.ck-dialog-overlay__transparent {\n\t\tpointer-events: none;\n\t\tanimation: none;\n\t\tbackground: none;\n\t}\n}\n\n.ck.ck-dialog {\n\toverscroll-behavior: none;\n\twidth: fit-content;\n\tposition: absolute;\n\n\t& .ck.ck-form__header {\n\t\tflex-shrink: 0;\n\n\t\t& .ck-form__header__label {\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t@nest .ck.ck-dialog-overlay.ck-dialog-overlay__transparent & {\n\t\tpointer-events: all;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n:root {\n\t--ck-dialog-overlay-background-color: hsla( 0, 0%, 0%, .5 );\n\t--ck-dialog-drop-shadow: 0px 0px 6px 2px hsl(0deg 0% 0% / 15%);\n\t--ck-dialog-max-width: 100vw;\n\t--ck-dialog-max-height: 90vh;\n\t--ck-color-dialog-background: var(--ck-color-base-background);\n\t--ck-color-dialog-form-header-border: var(--ck-color-base-border);\n}\n\n.ck.ck-dialog-overlay {\n\tanimation: ck-dialog-fade-in .3s;\n\tbackground: var(--ck-dialog-overlay-background-color);\n\tz-index: var(--ck-z-dialog);\n}\n\n.ck.ck-dialog {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\t--ck-drop-shadow: var(--ck-dialog-drop-shadow);\n\n\tbackground: var(--ck-color-dialog-background);\n\tmax-height: var(--ck-dialog-max-height);\n\tmax-width: var(--ck-dialog-max-width);\n\tborder: 1px solid var(--ck-color-base-border);\n\n\t& .ck.ck-form__header {\n\t\tborder-bottom: 1px solid var(--ck-color-dialog-form-header-border);\n\t}\n}\n\n@keyframes ck-dialog-fade-in {\n\t0% {\n\t\tbackground: hsla( 0, 0%, 0%, 0 );\n\t}\n\n\t100% {\n\t\tbackground: var(--ck-dialog-overlay-background-color);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7748: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-dialog .ck.ck-dialog__actions{display:flex;justify-content:flex-end;padding:var(--ck-spacing-large)}.ck.ck-dialog .ck.ck-dialog__actions>*+*{margin-left:var(--ck-spacing-large)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialogactions.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialogactions.css", ], names: [], mappings: "AAMC,qCACC,YAAa,CACb,wBAAyB,CCDzB,+BDED,CCAC,yCACC,mCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-dialog {\n\t& .ck.ck-dialog__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-dialog {\n\t& .ck.ck-dialog__actions {\n\t\tpadding: var(--ck-spacing-large);\n\n\t\t& > * + * {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1887: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-panel)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-panel) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}.ck.ck-dropdown__panel:focus{outline:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAKA,MACC,4BACD,CAEA,gBACC,oBAAqB,CACrB,iBA2ED,CAzEC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UACD,CAEA,oCACC,YAAa,CAEb,sCAAuC,CAEvC,iBAAkB,CAHlB,yBA4DD,CAvDC,+DACC,oBACD,CAEA,mSAKC,WACD,CAEA,mSAUC,WAAY,CADZ,QAED,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAEA,kHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAQF,mCACC,mCACD,CCpFA,MACC,sDACD,CAEA,gBAEC,iBA2ED,CAzEC,oCACC,mCACD,CAGC,8CAIC,sCAAuC,CAHvC,gCAID,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEAEC,eAAgB,CAChB,sBAAuB,CAFvB,SAGD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAGA,yHAEC,eAKD,CAHC,qIE7EF,2CF+EE,CAKH,uBGlFC,eHkHD,CAhCA,qFG9EE,qCH8GF,CAhCA,uBAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CE1FT,oCAA8B,CF6F9B,cAuBD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-dropdown-max-width: 75vw;\n}\n\n.ck.ck-dropdown {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t& .ck-dropdown__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n\n\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\n\t& .ck-button.ck-dropdown__button {\n\t\twidth: 100%;\n\t}\n\n\t& .ck-dropdown__panel {\n\t\tdisplay: none;\n\t\tz-index: var(--ck-z-panel);\n\t\tmax-width: var(--ck-dropdown-max-width);\n\n\t\tposition: absolute;\n\n\t\t&.ck-dropdown__panel-visible {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_n,\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_nme {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-dropdown__panel_se,\n\t\t&.ck-dropdown__panel_sw,\n\t\t&.ck-dropdown__panel_smw,\n\t\t&.ck-dropdown__panel_sme,\n\t\t&.ck-dropdown__panel_s {\n\t\t\t/*\n\t\t\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\n\t\t\t */\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_se {\n\t\t\tleft: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_sw {\n\t\t\tright: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_s,\n\t\t&.ck-dropdown__panel_n {\n\t\t\t/* Positioning panels relative to the center of the button */\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_smw {\n\t\t\t/* Positioning panels relative to the middle-west of the button */\n\t\t\tleft: 75%;\n\t\t\ttransform: translateX(-75%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nme,\n\t\t&.ck-dropdown__panel_sme {\n\t\t\t/* Positioning panels relative to the middle-east of the button */\n\t\t\tleft: 25%;\n\t\t\ttransform: translateX(-25%);\n\t\t}\n\t}\n}\n\n/*\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\n * See https://github.com/ckeditor/ckeditor5/issues/7874\n */\n.ck.ck-toolbar .ck-dropdown__panel {\n\tz-index: calc( var(--ck-z-panel) + 1 );\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-dropdown {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-dropdown__arrow {\n\t\twidth: var(--ck-dropdown-arrow-size);\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-dropdown__arrow {\n\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-dropdown__arrow {\n\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-dropdown__arrow {\n\t\t@mixin ck-disabled;\n\t}\n\n\t& .ck-button.ck-dropdown__button {\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t/* #23 */\n\t\t& .ck-button__label {\n\t\t\twidth: 7em;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t\t&.ck-disabled .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t&.ck-dropdown__button_label-width_auto .ck-button__label {\n\t\t\twidth: auto;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\n\t\t&.ck-off:active,\n\t\t&.ck-on:active {\n\t\t\tbox-shadow: none;\n\n\t\t\t&:focus {\n\t\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-dropdown__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\n\t/* Make sure the panel is at least as wide as the drop-down\'s button. */\n\tmin-width: 100%;\n\n\t/* Disabled corner border radius to be consistent with the .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-dropdown__panel_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6571: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-dropdown>.ck-dropdown__panel>.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown>.ck-dropdown__panel>.ck-list,.ck.ck-dropdown>.ck-dropdown__panel>.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:first-child>.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:first-child>.ck-button,.ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:first-child>.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:last-child>.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:last-child>.ck-button,.ck.ck-dropdown>.ck-dropdown__panel>.ck-list .ck-list__item:last-child>.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAOA,6CCIC,eDqBD,CAzBA,iICQE,qCAAsC,CDJtC,wBAqBF,CAfE,mFCND,eDYC,CANA,6MCFA,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBAIF,CAEA,kFCdD,eDmBC,CALA,2MCVA,qCAAsC,CDYpC,wBAAyB,CACzB,yBAEF", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-dropdown > .ck-dropdown__panel > .ck-list {\n\t/* Disabled radius of top-left border to be consistent with .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t/* Make sure the button belonging to the first/last child of the list goes well with the\n\tborder radius of the entire panel. */\n\t& .ck-list__item {\n\t\t&:first-child > .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\n\t\t&:last-child > .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 4890: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton>.ck-splitbutton__arrow:not(:focus){border-bottom-width:0;border-top-width:0}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:focus:after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:focus:after{--ck-color-split-button-hover-border:var(--ck-color-focus-border)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAMC,oIAKE,gCAAiC,CADjC,6BASF,CAbA,oIAWE,+BAAgC,CADhC,4BAGF,CAEA,0CAGC,eAiBD,CApBA,oDAQE,+BAAgC,CADhC,4BAaF,CApBA,oDAcE,gCAAiC,CADjC,6BAOF,CAHC,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAQC,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD,CAMF,uCCzFA,eDmGA,CAVA,qHCrFC,qCD+FD,CARE,qKACC,2BACD,CAEA,mKACC,4BACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-splitbutton {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-splitbutton__action:focus {\n\t\tz-index: calc(var(--ck-z-default) + 1);\n\t}\n}\n\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\n\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\n}\n\n.ck.ck-splitbutton {\n\t/*\n\t * Note: ck-rounded and ck-dir mixins don\'t go together (because they both use @nest).\n\t */\n\t&:hover > .ck-splitbutton__action,\n\t&.ck-splitbutton_open > .ck-splitbutton__action {\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the action button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the action button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\t}\n\n\t& > .ck-splitbutton__arrow {\n\t\t/* It\'s a text-less button and since the icon is positioned absolutely in such situation,\n\t\tit must get some arbitrary min-width. */\n\t\tmin-width: unset;\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the arrow button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the arrow button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\t\t}\n\t}\n\n\t/* Make sure the divider stretches 100% height of the button\n\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\n\t& > .ck-splitbutton__arrow:not(:focus) {\n\t\tborder-top-width: 0px;\n\t\tborder-bottom-width: 0px;\n\t}\n\n\t/* When the split button is "open" (the arrow is on) or being hovered, it should get some styling\n\tas a whole. The background of both buttons should stand out and there should be a visual\n\tseparation between both buttons. */\n\t&.ck-splitbutton_open,\n\t&:hover {\n\t\t/* When the split button hovered as a whole, not as individual buttons. */\n\t\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\n\t\t\tbackground: var(--ck-color-split-button-hover-background);\n\t\t}\n\n\t\t/* Splitbutton separator needs to be set with the ::after pseudoselector\n\t\tto display properly the borders on focus */\n\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\tcontent: \'\';\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t\theight: 100%;\n\t\t\tbackground-color: var(--ck-color-split-button-hover-border);\n\t\t}\n\n\t\t/* Make sure the divider between the buttons looks fine when the button is focused */\n\t\t& > .ck-splitbutton__arrow:focus::after {\n\t\t\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\n\t\t}\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tleft: -1px;\n\t\t\t}\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tright: -1px;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Don\'t round the bottom left and right corners of the buttons when "open"\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-splitbutton_open {\n\t\t@mixin ck-rounded-corners {\n\t\t\t& > .ck-splitbutton__action {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t}\n\n\t\t\t& > .ck-splitbutton__arrow {\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9432: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css", ], names: [], mappings: "AAKA,MACC,oCACD,CAEA,4CAGC,8CAA+C,CAD/C,iBAQD,CAJE,6DACC,qCACD,CCZF,oCACC,QACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-toolbar-dropdown-max-width: 60vw;\n}\n\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\n\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\n\twidth: max-content;\n\tmax-width: var(--ck-toolbar-dropdown-max-width);\n\n\t& .ck-button {\n\t\t&:focus {\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-toolbar-dropdown .ck-toolbar {\n\tborder: 0;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1353: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-accessibility-help-dialog-max-width:600px;--ck-accessibility-help-dialog-max-height:400px;--ck-accessibility-help-dialog-border-color:#ccced1;--ck-accessibility-help-dialog-code-background-color:#ededed;--ck-accessibility-help-dialog-kbd-shadow-color:#9c9c9c}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content{border:1px solid transparent;max-height:var(--ck-accessibility-help-dialog-max-height);max-width:var(--ck-accessibility-help-dialog-max-width);overflow:auto;padding:var(--ck-spacing-large);user-select:text}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content{*{white-space:normal}}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content .ck-label{display:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3{font-size:1.2em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4{font-size:1em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content p,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content table{margin:1em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl{border-bottom:none;border-top:1px solid var(--ck-accessibility-help-dialog-border-color);display:grid;grid-template-columns:2fr 1fr}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{border-bottom:1px solid var(--ck-accessibility-help-dialog-border-color);padding:.4em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{grid-column-start:1}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd{grid-column-start:2;text-align:right}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{background:var(--ck-accessibility-help-dialog-code-background-color);border-radius:2px;display:inline-block;font-size:.9em;line-height:1;padding:.4em;text-align:center;vertical-align:middle}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code{font-family:monospace}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{box-shadow:0 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);margin:0 1px;min-width:1.8em}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd+kbd{margin-left:2px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/accessibilityhelp.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAQA,MACC,8CAA+C,CAC/C,+CAAgD,CAChD,mDAA8D,CAC9D,4DAAyE,CACzE,uDACD,CAEA,wEAOC,4BAA6B,CAJ7B,yDAA0D,CAD1D,uDAAwD,CAExD,aAAc,CAHd,+BAAgC,CAIhC,gBAgFD,CA5EC,8ECdA,2BAA2B,CCF3B,2CAA8B,CDC9B,YDkBA,CAZD,wEAcC,EACC,kBACD,CAqED,CAlEC,kFACC,YACD,CAEA,2EAEC,eAAgB,CADhB,eAED,CAEA,2EAEC,aAAc,CADd,eAED,CAEA,8SAIC,YACD,CAEA,2EAIC,kBAAmB,CADnB,qEAAsE,CAFtE,YAAa,CACb,6BAiBD,CAbC,4JACC,wEAAyE,CACzE,cACD,CAEA,8EACC,mBACD,CAEA,8EACC,mBAAoB,CACpB,gBACD,CAGD,yJAEC,oEAAqE,CAIrE,iBAAkB,CALlB,oBAAqB,CAOrB,cAAe,CAHf,aAAc,CAFd,YAAa,CAIb,iBAAkB,CAHlB,qBAKD,CAEA,6EACC,qBACD,CAEA,4EAEC,yEAA4E,CAC5E,YAAa,CAFb,eAOD,CAHC,gFACC,eACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-accessibility-help-dialog-max-width: 600px;\n\t--ck-accessibility-help-dialog-max-height: 400px;\n\t--ck-accessibility-help-dialog-border-color: hsl(220, 6%, 81%);\n\t--ck-accessibility-help-dialog-code-background-color: hsl(0deg 0% 92.94%);\n\t--ck-accessibility-help-dialog-kbd-shadow-color: hsl(0deg 0% 61%);\n}\n\n.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content {\n\tpadding: var(--ck-spacing-large);\n\tmax-width: var(--ck-accessibility-help-dialog-max-width);\n\tmax-height: var(--ck-accessibility-help-dialog-max-height);\n\toverflow: auto;\n\tuser-select: text;\n\n\tborder: 1px solid transparent;\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t* {\n\t\twhite-space: normal;\n\t}\n\n\t/* Hide the main label of the content container. */\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t& h3 {\n\t\tfont-weight: bold;\n\t\tfont-size: 1.2em;\n\t}\n\n\t& h4 {\n\t\tfont-weight: bold;\n\t\tfont-size: 1em;\n\t}\n\n\t& p,\n\t& h3,\n\t& h4,\n\t& table {\n\t\tmargin: 1em 0;\n\t}\n\n\t& dl {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 2fr 1fr;\n\t\tborder-top: 1px solid var(--ck-accessibility-help-dialog-border-color);\n\t\tborder-bottom: none;\n\n\t\t& dt, & dd {\n\t\t\tborder-bottom: 1px solid var(--ck-accessibility-help-dialog-border-color);\n\t\t\tpadding: .4em 0;\n\t\t}\n\n\t\t& dt {\n\t\t\tgrid-column-start: 1;\n\t\t}\n\n\t\t& dd {\n\t\t\tgrid-column-start: 2;\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& kbd, & code {\n\t\tdisplay: inline-block;\n\t\tbackground: var(--ck-accessibility-help-dialog-code-background-color);\n\t\tpadding: .4em;\n\t\tvertical-align: middle;\n\t\tline-height: 1;\n\t\tborder-radius: 2px;\n\t\ttext-align: center;\n\t\tfont-size: .9em;\n\t}\n\n\t& code {\n\t\tfont-family: monospace;\n\t}\n\n\t& kbd {\n\t\tmin-width: 1.8em;\n\t\tbox-shadow: 0px 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);\n\t\tmargin: 0 1px;\n\n\t\t& + kbd {\n\t\t\tmargin-left: 2px;\n\t\t}\n\t}\n}\n\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5931: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CAPA,yJCAE,qCDOF,CAJC,oEEPA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFWA,CAGD,+BAGC,4BAA6B,CAF7B,aAAc,CACd,oCA6BD,CA1BC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CAKC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,oDACD,CAIA,gEACC,iDACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_focus.css";\n@import "../../mixins/_button.css";\n\n:root {\n\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\n}\n\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\n\t@mixin ck-rounded-corners;\n\n\t&.ck-focused {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t}\n}\n\n.ck.ck-editor__editable_inline {\n\toverflow: auto;\n\tpadding: 0 var(--ck-spacing-standard);\n\tborder: 1px solid transparent;\n\n\t&[dir="ltr"] {\n\t\ttext-align: left;\n\t}\n\n\t&[dir="rtl"] {\n\t\ttext-align: right;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\n\t& > *:first-child {\n\t\tmargin-top: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\n\t& > *:last-child {\n\t\t/*\n\t\t * This value should match with the default margins of the block elements (like .media or .image)\n\t\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\n\t\t */\n\t\tmargin-bottom: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\n\t&.ck-blurred ::selection {\n\t\tbackground: var(--ck-color-editable-blur-selection);\n\t}\n}\n\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"] {\n\t&::after {\n\t\tborder-bottom-color: var(--ck-color-panel-background);\n\t}\n}\n\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"] {\n\t&::after {\n\t\tborder-top-color: var(--ck-color-panel-background);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8379: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__header h2.ck-form__header__label{flex-grow:1}:root{--ck-form-header-height:44px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}[dir=ltr] .ck.ck-form__header>.ck-icon{margin-right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-form__header>.ck-icon{margin-left:var(--ck-spacing-medium)}.ck.ck-form__header .ck-form__header__label{--ck-font-size-base:15px;font-weight:700}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css", ], names: [], mappings: "AAKA,oBAIC,kBAAmB,CAHnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CAEjB,6BAKD,CAHC,8CACC,WACD,CCPD,MACC,4BACD,CAEA,oBAIC,mDAAoD,CAFpD,mCAAoC,CACpC,wCAAyC,CAFzC,uDAmBD,CAdC,uCAEE,qCAMF,CARA,uCAME,oCAEF,CAEA,4CACC,wBAAyB,CACzB,eACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__header {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: center;\n\tjustify-content: space-between;\n\n\t& h2.ck-form__header__label {\n\t\tflex-grow: 1;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-form-header-height: 44px;\n}\n\n.ck.ck-form__header {\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\n\theight: var(--ck-form-header-height);\n\tline-height: var(--ck-form-header-height);\n\tborder-bottom: 1px solid var(--ck-color-base-border);\n\n\t& > .ck-icon {\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: var(--ck-spacing-medium);\n\t\t}\n\t}\n\n\t& .ck-form__header__label {\n\t\t--ck-font-size-base: 15px;\n\t\tfont-weight: bold;\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 2859: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-highlighted-text mark{background:var(--ck-color-highlight-background);font-size:inherit;font-weight:inherit;line-height:inherit;vertical-align:initial}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css", ], names: [], mappings: "AAKA,6BACC,+CAAgD,CAIhD,iBAAkB,CAFlB,mBAAoB,CACpB,mBAAoB,CAFpB,sBAID", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-highlighted-text mark {\n\tbackground: var(--ck-color-highlight-background);\n\tvertical-align: initial;\n\tfont-weight: inherit;\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 2191: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{cursor:inherit}.ck.ck-icon.ck-icon_inherit-color,.ck.ck-icon.ck-icon_inherit-color *{color:inherit}.ck.ck-icon.ck-icon_inherit-color :not([fill]){fill:currentColor}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css", ], names: [], mappings: "AAKA,YACC,qBACD,CCFA,MACC,0EACD,CAEA,YAKC,uBAAwB,CAHxB,0BAA2B,CAD3B,yBAA0B,CAU1B,qBAoBD,CAlBC,0BALA,cAQA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-icon {\n\tvertical-align: middle;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\n}\n\n.ck.ck-icon {\n\twidth: var(--ck-icon-size);\n\theight: var(--ck-icon-size);\n\n\t/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */\n\tfont-size: .8333350694em;\n\n\t/* Inherit cursor style (#5). */\n\tcursor: inherit;\n\n\t/* This will prevent blurry icons on Firefox. See #340. */\n\twill-change: transform;\n\n\t& * {\n\t\t/* Inherit cursor style (#5). */\n\t\tcursor: inherit;\n\t}\n\n\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\n\t&.ck-icon_inherit-color {\n\t\tcolor: inherit;\n\n\t\t& * {\n\t\t\tcolor: inherit;\n\n\t\t\t&:not([fill]) {\n\t\t\t\t/* Needed by FF. */\n\t\t\t\tfill: currentColor;\n\t\t\t}\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 4071: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}@media (prefers-reduced-motion:reduce){.ck.ck-input{transition:none}}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}@media (prefers-reduced-motion:reduce){.ck.ck-input.ck-error{animation:none}}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aCLC,eDmDD,CA9CA,iECDE,qCD+CF,CA9CA,aAGC,2CAA4C,CAC5C,6CAA8C,CAK9C,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DAkCD,CAhCC,uCAdD,aAeE,eA+BF,CA9BC,CAEA,mBEvBA,2BAA2B,CCF3B,2CAA8B,CDC9B,YF2BA,CAEA,uBAEC,oDAAqD,CADrD,sDAAuD,CAEvD,yCAMD,CAJC,6BGnCD,oDHsCC,CAGD,sBAEC,sCAAuC,CADvC,+CAUD,CAPC,uCAJD,sBAKE,cAMF,CALC,CAEA,4BGjDD,iDHmDC,CAIF,0BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-input-width: 18em;\n\n\t/* Backward compatibility. */\n\t--ck-input-text-width: var(--ck-input-width);\n}\n\n.ck.ck-input {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-input-background);\n\tborder: 1px solid var(--ck-color-input-border);\n\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\n\tmin-width: var(--ck-input-width);\n\n\t/* This is important to stay of the same height as surrounding buttons */\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t&[readonly] {\n\t\tborder: 1px solid var(--ck-color-input-disabled-border);\n\t\tbackground: var(--ck-color-input-disabled-background);\n\t\tcolor: var(--ck-color-input-disabled-text);\n\n\t\t&:focus {\n\t\t\t/* The read-only input should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\tborder-color: var(--ck-color-input-error-border);\n\t\tanimation: ck-input-shake .3s ease both;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\tanimation: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\n\t\t}\n\t}\n}\n\n@keyframes ck-input-shake {\n\t20% {\n\t\ttransform: translateX(-2px);\n\t}\n\n\t40% {\n\t\ttransform: translateX(2px);\n\t}\n\n\t60% {\n\t\ttransform: translateX(-1px);\n\t}\n\n\t80% {\n\t\ttransform: translateX(1px);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3475: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css", ], names: [], mappings: "AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tdisplay: block;\n}\n\n.ck.ck-voice-label {\n\tdisplay: none;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tfont-weight: bold;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 2828: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-labeled-field-label-default-position-x:var(--ck-spacing-medium);--ck-labeled-field-label-default-position-y:calc(var(--ck-font-size-base)*0.6);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0;transform:translate(calc(var(--ck-spacing-medium)*-1),-6px) scale(.75);transform-origin:100% 0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}@media (prefers-reduced-motion:reduce){.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transition:none}}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-labeled-field-label-default-position-x),var(--ck-labeled-field-label-default-position-y)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-labeled-field-label-default-position-x)*-1),var(--ck-labeled-field-label-default-position-y)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAMC,mEACC,YAAa,CACb,iBACD,CAEA,uCACC,aAAc,CACd,iBACD,CCND,MACC,kEAAsE,CACtE,gFAAiF,CACjF,oEAAqE,CACrE,8EAAiF,CACjF,yEACD,CAEA,0BCLC,eDmHD,CA9GA,2FCDE,qCD+GF,CA3GC,mEACC,UAwCD,CAtCC,gFACC,KAoCD,CArCA,0FAIE,MAAS,CAGT,6DAA+D,CAF/D,oBAgCF,CArCA,0FAWE,OAAU,CAEV,sEAA0E,CAD1E,uBAyBF,CArCA,gFAkBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAH9C,mBAAoB,CAQpB,sBAAuB,CAKvB,+JAQD,CAHC,uCAlCD,gFAmCE,eAEF,CADC,CASD,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,2XAGE,+HAYF,CAfA,2XAOE,wIAQF,CAfA,uWAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CAKA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-labeled-field-view {\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t}\n\n\t& .ck.ck-label {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\n\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\n\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\n}\n\n.ck.ck-labeled-field-view {\n\t@mixin ck-rounded-corners;\n\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\twidth: 100%;\n\n\t\t& > .ck.ck-label {\n\t\t\ttop: 0px;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tleft: 0px;\n\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t/* By default, display the label scaled down above the field. */\n\t\t\t\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tright: 0px;\n\t\t\t\ttransform-origin: 100% 0;\n\t\t\t\ttransform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75);\n\t\t\t}\n\n\t\t\tpointer-events: none;\n\n\t\t\tbackground: var(--ck-color-labeled-field-label-background);\n\t\t\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\n\t\t\tline-height: initial;\n\t\t\tfont-weight: normal;\n\n\t\t\t/* Prevent overflow when the label is longer than the input */\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\n\t\t\tmax-width: 100%;\n\n\t\t\ttransition:\n\t\t\t\ttransform var(--ck-labeled-field-view-transition),\n\t\t\t\tpadding var(--ck-labeled-field-view-transition),\n\t\t\t\tbackground var(--ck-labeled-field-view-transition);\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\n\t\t& .ck-input:not([readonly]) + .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t& .ck-labeled-field-view__status {\n\t\tfont-size: var(--ck-font-size-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\n\t\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\n\t\tThe status could be very long. */\n\t\twhite-space: normal;\n\n\t\t&.ck-labeled-field-view__status_error {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t/* Disabled fields and fields that have no focus should fade out. */\n\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\tcolor: var(--ck-color-input-disabled-text);\n\t}\n\n\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t@mixin ck-dir ltr {\n\t\t\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttransform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t/* Compensate for the default translate position. */\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\n\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\n\n\t/* Make sure dropdown\' background color in any of dropdown\'s state does not collide with labeled field. */\n\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\n\t\tbackground: transparent;\n\t}\n\n\t/* When the dropdown is "empty", the labeled field label replaces its label. */\n\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\n\t\topacity: 0;\n\t}\n\n\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8753: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}:root{--ck-list-button-padding:calc(var(--ck-line-height-base)*0.11*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*0.4*var(--ck-font-size-base))}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item>.ck-button{border-radius:0;min-height:unset;width:100%}[dir=ltr] .ck.ck-list__item>.ck-button{text-align:left}[dir=rtl] .ck.ck-list__item>.ck-button{text-align:right}.ck.ck-list__item>.ck-button{padding:var(--ck-list-button-padding)}.ck.ck-list__item>.ck-button:active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item>.ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item>.ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item>.ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item>.ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item>.ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck-list .ck-list__group{padding-top:var(--ck-spacing-medium);:not(.ck-hidden)~&{border-top:1px solid var(--ck-color-base-border)}}.ck-list .ck-list__group>.ck-label{font-size:11px;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-medium) 0 var(--ck-spacing-medium)}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAOA,YAGC,YAAa,CACb,qBAAsB,CCFtB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDaD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEdD,MACC,qJAGD,CAEA,YCLC,eDUD,CALA,+DCDE,qCDMF,CALA,YAIC,0CAA2C,CAD3C,oBAED,CAEA,kBACC,cAAe,CACf,cA2DD,CAzDC,6BAGC,eAAgB,CAFhB,gBAAiB,CACjB,UAwCD,CA1CA,uCAME,eAoCF,CA1CA,uCAUE,gBAgCF,CA1CA,6BAgBC,qCA0BD,CAxBC,oCACC,eACD,CAEA,mCACC,oDAAqD,CACrD,yCAaD,CAXC,0CACC,eACD,CAEA,2DACC,0DACD,CAEA,iFACC,4CACD,CAGD,qDACC,uDACD,CAMA,yCACC,0CAA2C,CAC3C,aAMD,CAJC,iEACC,uDAAwD,CACxD,aACD,CAKH,yBACC,oCAAqC,CAGrC,mBACC,gDACD,CAOD,CALC,mCACC,cAAe,CACf,eAAiB,CACjB,oFACD,CAGD,uBAGC,sCAAuC,CAFvC,UAAW,CACX,UAED", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-list {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t& .ck-list__item,\n\t& .ck-list__separator {\n\t\tdisplay: block;\n\t}\n\n\t/* Make sure that whatever child of the list item gets focus, it remains on the\n\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\n\tadjacent list items. */\n\t& .ck-list__item > *:focus {\n\t\tposition: relative;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-list-button-padding:\n\t\tcalc(.11 * var(--ck-line-height-base) * var(--ck-font-size-base))\n\t\tcalc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base));\n}\n\n.ck.ck-list {\n\t@mixin ck-rounded-corners;\n\n\tlist-style-type: none;\n\tbackground: var(--ck-color-list-background);\n}\n\n.ck.ck-list__item {\n\tcursor: default;\n\tmin-width: 12em;\n\n\t& > .ck-button {\n\t\tmin-height: unset;\n\t\twidth: 100%;\n\t\tborder-radius: 0;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\n\t\t/* List items should have the same height. Use absolute units to make sure it is so\n\t\t because e.g. different heading styles may have different height\n\t\t https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\tpadding: var(--ck-list-button-padding);\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-button-on-background);\n\t\t\tcolor: var(--ck-color-list-button-on-text);\n\n\t\t\t&:active {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-on-background-focus);\n\t\t\t}\n\n\t\t\t&:focus:not(.ck-switchbutton):not(.ck-disabled) {\n\t\t\t\tborder-color: var(--ck-color-base-background);\n\t\t\t}\n\t\t}\n\n\t\t&:hover:not(.ck-disabled) {\n\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t}\n\t}\n\n\t/* It\'s unnecessary to change the background/text of a switch toggle; it has different ways\n\tof conveying its state (like the switcher) */\n\t& > .ck-switchbutton {\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-background);\n\t\t\tcolor: inherit;\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck-list .ck-list__group {\n\tpadding-top: var(--ck-spacing-medium);\n\n\t/* The group should have a border when it\'s not the first item. */\n\t*:not(.ck-hidden) ~ & {\n\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t}\n\n\t& > .ck-label {\n\t\tfont-size: 11px;\n\t\tfont-weight: bold;\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-medium) 0 var(--ck-spacing-medium);\n\t}\n}\n\n.ck.ck-list__separator {\n\theight: 1px;\n\twidth: 100%;\n\tbackground: var(--ck-color-base-border);\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3779: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-menu-bar{background:var(--ck-color-base-background);border:1px solid var(--ck-color-toolbar-border);display:flex;flex-wrap:wrap;gap:var(--ck-spacing-small);justify-content:flex-start;padding:var(--ck-spacing-small);width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubar.css", ], names: [], mappings: "AAKA,gBAIC,0CAA2C,CAG3C,+CAAgD,CANhD,YAAa,CACb,cAAe,CAIf,2BAA4B,CAH5B,0BAA2B,CAE3B,+BAAgC,CAGhC,UACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-menu-bar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: flex-start;\n\tbackground: var(--ck-color-base-background);\n\tpadding: var(--ck-spacing-small);\n\tgap: var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\twidth: 100%;\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5842: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-menu-bar__menu{display:block;font-size:inherit;position:relative}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level{max-width:100%}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenu.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenu.css", ], names: [], mappings: "AAKA,sBACC,aAAc,CCCd,iBAAkB,CDAlB,iBACD,CCCC,kDACC,cACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-menu-bar__menu {\n\tdisplay: block;\n\tposition: relative;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-menu-bar__menu {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t&.ck-menu-bar__menu_top-level {\n\t\tmax-width: 100%;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6050: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button{padding:var(--ck-list-button-padding);width:100%}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-button__label{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button.ck-disabled>.ck-button__label{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button{min-height:unset;padding:var(--ck-spacing-small) var(--ck-spacing-medium)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-button__label{line-height:unset;width:unset}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-icon{display:none}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button{border-radius:0}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button:focus{border-color:transparent;box-shadow:none}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button:not(:has(.ck-button__icon))>.ck-button__label{margin-left:calc(var(--ck-icon-size) - var(--ck-spacing-small))}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{transform:rotate(-90deg)}[dir=rtl] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{transform:rotate(90deg)}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button.ck-disabled>.ck-menu-bar__menu__button__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenubutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenubutton.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css", ], names: [], mappings: "AAMC,mFACC,mBAAoB,CACpB,2BACD,CCIA,iDACC,qCAAsC,CACtC,UAuBD,CArBC,mEACC,WAAY,CACZ,eAAgB,CAChB,sBACD,CAEA,+ECdD,kCDgBC,CAGC,qFACC,oCACD,CAIA,qFACC,qCACD,CAOF,6EAEC,gBAAiB,CADjB,wDAgBD,CAbC,+FAEC,iBAAkB,CADlB,WAED,CAEA,mFACC,2BAA4B,CAC5B,4BACD,CAEA,sFACC,YACD,CAMD,mFACC,eAiDD,CA/CC,yFACC,wBAAyB,CACzB,eAKD,CAHC,qGACC,0DACD,CAID,iIACC,+DACD,CAEA,qHACC,mCASD,CAVA,+HAIE,wBAMF,CAVA,+HAQE,uBAEF,CAEA,iICrFD,kCDuFC,CAGC,+HAIC,sCAAuC,CAHvC,gCAID,CAIA,+HACC,+BAAgC,CAGhC,oCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-menu-bar__menu {\n\t& > .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-menu-bar__menu {\n\t/*\n\t * All menu buttons.\n\t */\n\t& > .ck-menu-bar__menu__button {\n\t\tpadding: var(--ck-list-button-padding);\n\t\twidth: 100%;\n\n\t\t& > .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&.ck-disabled > .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Top-level menu buttons only.\n\t */\n\t&.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button {\n\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\tmin-height: unset;\n\n\t\t& .ck-button__label {\n\t\t\twidth: unset;\n\t\t\tline-height: unset;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/*\n\t * Sub-menu buttons.\n\t */\n\t&:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button {\n\t\tborder-radius: 0;\n\n\t\t&:focus {\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\n\t\t\t&:not(.ck-on) {\n\t\t\t\tbackground: var(--ck-color-button-default-hover-background);\n\t\t\t}\n\t\t}\n\n\t\t/* Spacing in buttons that miss the icon. */\n\t\t&:not(:has(.ck-button__icon)) > .ck-button__label {\n\t\t\tmargin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small));\n\t\t}\n\n\t\t& > .ck-menu-bar__menu__button__arrow {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\ttransform: rotate(-90deg);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\ttransform: rotate(90deg);\n\t\t\t}\n\t\t}\n\n\t\t&.ck-disabled > .ck-menu-bar__menu__button__arrow {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\t& > .ck-menu-bar__menu__button__arrow {\n\t\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t\t/* A space to accommodate the triangle. */\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t& > .ck-menu-bar__menu__button__arrow {\n\t\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t\t/* A space to accommodate the triangle. */\n\t\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3835: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-menu-bar-menu-item-min-width:18em}.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item{min-width:var(--ck-menu-bar-menu-item-min-width)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitem.css", ], names: [], mappings: "AAKA,MACC,sCACD,CAEA,kDACC,gDACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-menu-bar-menu-item-min-width: 18em;\n}\n\n.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item {\n\tmin-width: var(--ck-menu-bar-menu-item-min-width);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 5519: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button{border-radius:0}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container,.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container .ck-spinner{--ck-toolbar-spinner-size:20px}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button:focus{border-color:transparent;box-shadow:none}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__panel>ul>.ck-menu-bar__menu__item>.ck-menu-bar__menu__item__button:not(:has(.ck-button__icon))>.ck-button__label{margin-left:calc(var(--ck-icon-size) - var(--ck-spacing-small))}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitembutton.css", ], names: [], mappings: "AASC,iEACC,eA0BD,CAxBC,0LAGC,8BACD,CAEA,uFAEC,4CAA+C,CAC/C,oCACD,CAMA,uEACC,wBAAyB,CACzB,eAKD,CAHC,mFACC,0DACD,CASD,uLACC,+DACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-menu-bar__menu {\n\t/*\n\t * List item buttons.\n\t */\n\t& .ck-button.ck-menu-bar__menu__item__button {\n\t\tborder-radius: 0;\n\n\t\t& > .ck-spinner-container,\n\t\t& > .ck-spinner-container .ck-spinner {\n\t\t\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\n\t\t\t--ck-toolbar-spinner-size: 20px;\n\t\t}\n\n\t\t& > .ck-spinner-container {\n\t\t\t/* These margins are the same as for .ck-icon. */\n\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t/*\n\t\t * Hovered items automatically get focused. Default focus styles look odd\n\t\t * while moving across a huge list of items so let's get rid of them\n\t\t */\n\t\t&:focus {\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\n\t\t\t&:not(.ck-on) {\n\t\t\t\tbackground: var(--ck-color-button-default-hover-background);\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * First-level sub-menu item buttons.\n\t */\n\t&.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__panel > ul > .ck-menu-bar__menu__item > .ck-menu-bar__menu__item__button {\n\t\t/* Spacing in buttons that miss the icon. */\n\t\t&:not(:has(.ck-button__icon)) > .ck-button__label {\n\t\t\tmargin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small));\n\t\t}\n\t}\n}\n\n\n", ], sourceRoot: "", }, ]); const c = a; }, 5306: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-menu-bar-menu-max-width:75vw;--ck-menu-bar-nested-menu-horizontal-offset:5px}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{max-width:var(--ck-menu-bar-menu-max-width);position:absolute;z-index:var(--ck-z-panel)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw{bottom:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{bottom:auto;top:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{left:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{right:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{left:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en{bottom:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{right:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{bottom:0}:root{--ck-menu-bar-menu-panel-max-width:75vw}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{border-radius:0}.ck-rounded-corners .ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;height:fit-content;max-width:var(--ck-menu-bar-menu-panel-max-width)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{border-top-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{border-top-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne{border-bottom-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{border-bottom-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel:focus{outline:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenupanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenupanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAKA,MACC,iCAAkC,CAClC,+CACD,CAEA,mDAEC,2CAA4C,CAC5C,iBAAkB,CAFlB,yBAkDD,CA9CC,gLAEC,WACD,CAEA,gLAGC,WAAY,CADZ,QAED,CAEA,gLAEC,MACD,CAEA,gLAEC,OACD,CAEA,gLAEC,kEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CAEA,gLAEC,mEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CCpDD,MACC,uCACD,CAEA,mDCDC,eDmCD,CAlCA,6ICGE,qCD+BF,CAlCA,mDAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CETT,oCAA8B,CFU9B,kBAAmB,CACnB,iDA0BD,CAvBC,gLAEC,wBACD,CAEA,gLAEC,yBACD,CAEA,gLAEC,2BACD,CAEA,gLAEC,4BACD,CAEA,yDACC,YACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-menu-bar-menu-max-width: 75vw;\n\t--ck-menu-bar-nested-menu-horizontal-offset: 5px;\n}\n\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\n\tz-index: var(--ck-z-panel);\n\tmax-width: var(--ck-menu-bar-menu-max-width);\n\tposition: absolute;\n\n\t&.ck-menu-bar__menu__panel_position_ne,\n\t&.ck-menu-bar__menu__panel_position_nw {\n\t\tbottom: 100%;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_se,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\ttop: 100%;\n\t\tbottom: auto;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ne,\n\t&.ck-menu-bar__menu__panel_position_se {\n\t\tleft: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_nw,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\tright: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_es,\n\t&.ck-menu-bar__menu__panel_position_en {\n\t\tleft: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_es {\n\t\ttop: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_en {\n\t\tbottom: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws,\n\t&.ck-menu-bar__menu__panel_position_wn {\n\t\tright: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws {\n\t\ttop: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_wn {\n\t\tbottom: 0px;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-menu-bar-menu-panel-max-width: 75vw;\n}\n\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\theight: fit-content;\n\tmax-width: var(--ck-menu-bar-menu-panel-max-width);\n\n\t/* Corner border radius consistent with the button. */\n\t&.ck-menu-bar__menu__panel_position_es,\n\t&.ck-menu-bar__menu__panel_position_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_en,\n\t&.ck-menu-bar__menu__panel_position_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_wn,\n\t&.ck-menu-bar__menu__panel_position_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9316: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-panel)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBCLC,eDmMD,CA9LA,iFCDE,qCD+LF,CA9LA,qBAMC,2CAA4C,CAC5C,wEAAyE,CEdzE,oCAA8B,CFW9B,eA0LD,CApLE,+GAIC,kBAAmB,CADnB,QAAS,CADT,OAGD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,kDACD,CAEA,2CACC,iFAAkF,CAClF,gFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,iEAAkE,CAClE,uDAAwD,CACxD,qDACD,CAEA,2CACC,iFAAkF,CAClF,mFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,oDACD,CAEA,2CACC,iFAAkF,CAClF,kFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,mDACD,CAEA,2CACC,iFAAkF,CAClF,iFACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAIC,8CAAiD,CAFjD,QAAS,CACT,uDAED,CAIA,2GAGC,8CAAiD,CADjD,+CAED,CAIA,2GAGC,8CAAiD,CADjD,gDAED,CAIA,6GAIC,8CAAiD,CADjD,uDAA0D,CAD1D,SAGD,CAIA,6GAIC,8CAAiD,CAFjD,QAAS,CACT,sDAED,CAIA,6GAGC,uDAA0D,CAD1D,SAAU,CAEV,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD,CAIA,yGAGC,sDAAyD,CADzD,6CAAgD,CAEhD,OACD,CAIA,yGAEC,4CAA+C,CAC/C,sDAAyD,CACzD,OACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* Make sure the balloon arrow does not float over its children. */\n\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\n}\n\n.ck.ck-balloon-panel {\n\tdisplay: none;\n\tposition: absolute;\n\n\tz-index: var(--ck-z-panel);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_visible {\n\t\tdisplay: block;\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-border-width: 1px;\n\t--ck-balloon-arrow-offset: 2px;\n\t--ck-balloon-arrow-height: 10px;\n\t--ck-balloon-arrow-half-width: 8px;\n\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\n}\n\n.ck.ck-balloon-panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\n\t\t\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\n\t\t\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: var(--ck-color-panel-border) transparent transparent;\n\t\t\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\n\t\t\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\n\t\t\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_e"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\n\t\t\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\n\t\t\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_w"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\n\t\t\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\n\t\t\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_n {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_ne {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_s {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_se {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_smw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nmw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_e {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_w {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6841: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css", ], names: [], mappings: "AAKA,oCAEC,kBAAmB,CADnB,YAAa,CAEb,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCAGC,qCAAsC,CAFtC,oCAAqC,CACrC,kCAED,CAGA,iEAIC,mCAAoC,CAHpC,uCAID,CAMA,2DACC,eACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\n */\n.ck .ck-balloon-rotator__content .ck-toolbar {\n\tjustify-content: center;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tbackground: var(--ck-color-toolbar-background);\n\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\n\tpadding: 0 var(--ck-spacing-small);\n\n\t/* Let's keep similar appearance to `ck-toolbar`. */\n\t& > * {\n\t\tmargin-right: var(--ck-spacing-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t/* Gives counter more breath than buttons. */\n\t& .ck-balloon-rotator__counter {\n\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t/* We need to use smaller margin because of previous button's right margin. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n.ck .ck-balloon-rotator__content {\n\n\t/* Disable default annotation shadow inside rotator with fake panels. */\n\t& .ck.ck-annotation-wrapper {\n\t\tbox-shadow: none;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 726: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-panel) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBAKC,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CCXtC,oCAA8B,CDc9B,WAAY,CAPZ,eAAgB,CAMhB,UAED,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-fake-panel {\n\tposition: absolute;\n\n\t/* Fake panels should be placed under main balloon content. */\n\tz-index: calc(var(--ck-z-panel) - 1);\n}\n\n.ck .ck-fake-panel div {\n\tposition: absolute;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tz-index: 2;\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tz-index: 1;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-fake-panel-offset-horizontal: 6px;\n\t--ck-balloon-fake-panel-offset-vertical: 6px;\n}\n\n/* Let\'s use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\n.ck .ck-fake-panel div {\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: 1px solid var(--ck-color-panel-border);\n\tborder-radius: var(--ck-border-radius);\n\n\twidth: 100%;\n\theight: 100%;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\n\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\n}\n.ck .ck-fake-panel div:nth-child( 3 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\n}\n\n/* If balloon is positioned above element, we need to move fake panel to the top. */\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\n\t--ck-balloon-fake-panel-offset-vertical: -6px;\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8016: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-panel)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/stickypanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", ], names: [], mappings: "AAMC,qDAEC,cAAe,CACf,KAAM,CAFN,yBAGD,CAEA,kEAEC,iBAAkB,CADlB,QAED,CCPA,qDAIC,wBAAyB,CACzB,yBAA0B,CAF1B,sBAAuB,CCFxB,oCDKA", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\tz-index: var(--ck-z-panel); /* #315 */\n\t\tposition: fixed;\n\t\ttop: 0;\n\t}\n\n\t& .ck-sticky-panel__content_sticky_bottom-limit {\n\t\ttop: auto;\n\t\tposition: absolute;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_shadow.css";\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\t@mixin ck-drop-shadow;\n\n\t\tborder-width: 0 1px 1px;\n\t\tborder-top-left-radius: 0;\n\t\tborder-top-right-radius: 0;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7072: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-number,.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css", ], names: [], mappings: "AAQC,mCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,yCACC,YACD,CCdA,oCDoBE,wCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,8CACC,YACD,CC9BF,CCAD,qDACC,kDACD,CAEA,uBACC,+BAoED,CAlEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,oCA+CF,CA7CE,8CACC,wDAYD,CAVC,4HAEC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAKA,0DACC,kDACD,CAGD,iGAIC,eAAgB,CADhB,kCAAmC,CADnC,kCAmBD,CAfC,yHACC,gDACD,CARD,0OAeE,aAMF,CAJE,+IACC,kDACD,CDrEH", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck-vertical-form .ck-button {\n\t&::after {\n\t\tcontent: "";\n\t\twidth: 0;\n\t\tposition: absolute;\n\t\tright: -1px;\n\t\ttop: -1px;\n\t\tbottom: -1px;\n\t\tz-index: 1;\n\t}\n\n\t&:focus::after {\n\t\tdisplay: none;\n\t}\n}\n\n.ck.ck-responsive-form {\n\t@mixin ck-media-phone {\n\t\t& .ck-button {\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\twidth: 0;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: -1px;\n\t\t\t\ttop: -1px;\n\t\t\t\tbottom: -1px;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\t&:focus::after {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\n\tborder-right: 1px solid var(--ck-color-base-border);\n}\n\n.ck.ck-responsive-form {\n\tpadding: var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& > :not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& > :not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tpadding: 0;\n\t\twidth: calc(.8 * var(--ck-input-width));\n\n\t\t& .ck-labeled-field-view {\n\t\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\n\n\t\t\t& .ck-input-text,\n\t\t\t& .ck-input-number {\n\t\t\t\tmin-width: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t/* Let the long error messages wrap in the narrow form. */\n\t\t\t& .ck-labeled-field-view__error {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\t\t}\n\n\t\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\t&::after {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\n\t\t& > .ck-button:nth-last-child(1),\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\tpadding: var(--ck-spacing-standard);\n\t\t\tmargin-top: var(--ck-spacing-large);\n\t\t\tborder-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 9381: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{position:absolute;top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{left:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{right:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view .ck-search__reset{position:absolute;top:50%;transform:translateY(-50%)}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{display:block}.ck.ck-search>.ck-search__results>.ck-search__info:not(.ck-hidden)~*{display:none}:root{--ck-search-field-view-horizontal-spacing:calc(var(--ck-icon-size) + var(--ck-spacing-medium))}.ck.ck-search>.ck-labeled-field-view .ck-input{width:100%}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon{--ck-labeled-field-label-default-position-x:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon>.ck-labeled-field-view__input-wrapper>.ck-icon{opacity:.5;pointer-events:none}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input,[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input:not(.ck-input-text_empty){padding-left:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset{--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset.ck-labeled-field-view_empty{--ck-labeled-field-empty-unfocused-max-width:100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{background:none;min-height:auto;min-width:auto;opacity:.5;padding:0}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{left:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset:hover{opacity:1}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input:not(.ck-input-text_empty),[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{padding-right:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-search__results{min-width:100%}.ck.ck-search>.ck-search__results>.ck-search__info{padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-search>.ck-search__results>.ck-search__info *{white-space:normal}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{font-weight:700}.ck.ck-search>.ck-search__results>.ck-search__info>span:last-child{margin-top:var(--ck-spacing-medium)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/search/search.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/search/search.css", ], names: [], mappings: "AASE,oFACC,iBAAkB,CAClB,OAAQ,CACR,0BASD,CAZA,8FAME,6BAMF,CAZA,8FAUE,8BAEF,CAEA,uDACC,iBAAkB,CAClB,OAAQ,CACR,0BACD,CAKC,oEACC,aACD,CAGA,qEACC,YACD,CChCH,MACC,8FACD,CAIE,+CACC,UACD,CAEA,gEACC,0FAoBD,CAlBC,+GACC,UAAW,CACX,mBACD,CAEA,0EACC,UAWD,CAJE,kMACC,2DACD,CAKH,iEACC,sGAwCD,CAtCC,6FACC,6HACD,CAEA,mFAIC,eAAgB,CAFhB,eAAgB,CADhB,cAAe,CAIf,UAAW,CACX,SAaD,CAnBA,6FASE,8BAUF,CAnBA,6FAaE,6BAMF,CAHC,yFACC,SACD,CAGD,2EACC,UAWD,CAZA,oMAUE,4DAEF,CAIF,kCACC,cAkBD,CAhBC,mDAEC,wDAAyD,CADzD,UAcD,CAXC,qDACC,kBACD,CAEA,oEACC,eACD,CAEA,mEACC,mCACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-search {\n\t& > .ck-labeled-field-view {\n\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tleft: var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tright: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\n\t\t& .ck-search__reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\t}\n\n\t& > .ck-search__results {\n\t\t& > .ck-search__info {\n\t\t\t& > span:first-child {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t/* Hide the filtered view when nothing was found */\n\t\t\t&:not(.ck-hidden) ~ * {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-search-field-view-horizontal-spacing: calc(var(--ck-icon-size) + var(--ck-spacing-medium));\n}\n\n.ck.ck-search {\n\t& > .ck-labeled-field-view {\n\t\t& .ck-input {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&.ck-search__query_with-icon {\n\t\t\t--ck-labeled-field-label-default-position-x: var(--ck-search-field-view-horizontal-spacing);\n\n\t\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\n\t\t\t\topacity: .5;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\n\t\t\t& .ck-input {\n\t\t\t\twidth: 100%;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\t&:not(.ck-input-text_empty) {\n\t\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.ck-search__query_with-reset {\n\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-search-field-view-horizontal-spacing);\n\n\t\t\t&.ck-labeled-field-view_empty {\n\t\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t& .ck-search__reset {\n\t\t\t\tmin-width: auto;\n\t\t\t\tmin-height: auto;\n\n\t\t\t\tbackground: none;\n\t\t\t\topacity: .5;\n\t\t\t\tpadding: 0;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tright: var(--ck-spacing-medium);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tleft: var(--ck-spacing-medium);\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-input {\n\t\t\t\twidth: 100%;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\t&:not(.ck-input-text_empty) {\n\t\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-search__results {\n\t\tmin-width: 100%;\n\n\t\t& > .ck-search__info {\n\t\t\twidth: 100%;\n\t\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\n\n\t\t\t& * {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\n\t\t\t& > span:first-child {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\t& > span:last-child {\n\t\t\t\tmargin-top: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\t}\n}\n\n', ], sourceRoot: "", }, ]); const c = a; }, 6047: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-spinner-container{display:block;position:relative}.ck.ck-spinner{left:0;margin:0 auto;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:1}:root{--ck-toolbar-spinner-size:18px}.ck.ck-spinner-container{animation:rotate 1.5s linear infinite;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@media (prefers-reduced-motion:reduce){.ck.ck-spinner-container{animation-duration:3s}}.ck.ck-spinner{border:2px solid var(--ck-color-text);border-radius:50%;border-top:2px solid transparent;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@keyframes rotate{to{transform:rotate(1turn)}}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/spinner/spinner.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/spinner/spinner.css", ], names: [], mappings: "AASA,yBACC,aAAc,CACd,iBACD,CAEA,eAGC,MAAO,CAEP,aAAc,CAJd,iBAAkB,CAGlB,OAAQ,CAFR,OAAQ,CAIR,0BAA2B,CAC3B,SACD,CCjBA,MACC,8BACD,CAEA,yBAGC,qCAAsC,CADtC,qCAAsC,CADtC,oCAOD,CAHC,uCALD,yBAME,qBAEF,CADC,CAGD,eAKC,qCAA6B,CAF7B,iBAAkB,CAElB,gCAA6B,CAH7B,qCAAsC,CADtC,oCAKD,CAEA,kBACC,GACC,uBACD,CACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-toolbar-spinner-size: 18px;\n}\n\n.ck.ck-spinner-container {\n\tdisplay: block;\n\tposition: relative;\n}\n\n.ck.ck-spinner {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 0;\n\tright: 0;\n\tmargin: 0 auto;\n\ttransform: translateY(-50%);\n\tz-index: 1;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-toolbar-spinner-size: 18px;\n}\n\n.ck.ck-spinner-container {\n\twidth: var(--ck-toolbar-spinner-size);\n\theight: var(--ck-toolbar-spinner-size);\n\tanimation: 1.5s infinite rotate linear;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation-duration: 3s;\n\t}\n}\n\n.ck.ck-spinner {\n\twidth: var(--ck-toolbar-spinner-size);\n\theight: var(--ck-toolbar-spinner-size);\n\tborder-radius: 50%;\n\tborder: 2px solid var(--ck-color-text);\n\tborder-top-color: transparent;\n}\n\n@keyframes rotate {\n\tto {\n\t\ttransform: rotate(360deg)\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 4097: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-textarea{overflow-x:hidden}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/textarea/textarea.css", ], names: [], mappings: "AASA,aACC,iBACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/*\n * This fixes a problem in Firefox when the initial height of the complement does not match the number of rows.\n * This bug is especially visible when rows=1.\n */\n.ck-textarea {\n\toverflow-x: hidden\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 8604: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/blocktoolbar.css", ], names: [], mappings: "AAKA,4BACC,iBAAkB,CAClB,2BACD,CCHA,MACC,oDAAqD,CACrD,yDACD,CAEA,4BACC,0CAA2C,CAC3C,sCACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-block-toolbar-button {\n\tposition: absolute;\n\tz-index: var(--ck-z-default);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-block-toolbar-button: var(--ck-color-text);\n\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\n}\n\n.ck.ck-block-toolbar-button {\n\tcolor: var(--ck-color-block-toolbar-button);\n\tfont-size: var(--ck-block-toolbar-size);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 9423: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck.ck-toolbar:focus{outline:none}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css", ], names: [], mappings: "AAOA,eAKC,kBAAmB,CAFnB,YAAa,CACb,oBAAqB,CCFrB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6CD,CA3CC,kCAGC,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,uCACC,eACD,CAEA,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE/CF,eCGC,eDwGD,CA3GA,qECOE,qCDoGF,CA3GA,eAGC,6CAA8C,CAE9C,+CAAgD,CADhD,iCAuGD,CApGC,yCACC,kBAAmB,CAGnB,yCAA0C,CAO1C,qCAAsC,CADtC,kCAAmC,CAPnC,aAAc,CADd,SAUD,CAEA,uCACC,QACD,CAGC,gEAEC,oCACD,CAIA,kEACC,YACD,CAGD,gHAIC,qCAAsC,CADtC,kCAED,CAEA,mCAEC,SAaD,CAVC,0DAQC,eAAgB,CAHhB,QAAS,CAHT,UAOD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAMA,wEACC,cACD,CAEA,iFACC,aAAc,CACd,UACD,CAGD,qBACC,YACD,CAtGD,qCAyGE,QAEF,CAYC,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JAEC,2BAA4B,CAD5B,wBAED,CAGA,2JAEC,4BAA6B,CAD7B,yBAED,CASD,8RACC,mCACD,CAWA,qHACC,cACD,CAIC,6JAEC,4BAA6B,CAD7B,yBAED,CAGA,2JAEC,2BAA4B,CAD5B,wBAED,CASD,8RACC,oCACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\n\t& > .ck-toolbar__items {\n\t\tdisplay: flex;\n\t\tflex-flow: row wrap;\n\t\talign-items: center;\n\t\tflex-grow: 1;\n\n\t}\n\n\t& .ck.ck-toolbar__separator {\n\t\tdisplay: inline-block;\n\n\t\t/*\n\t\t * A leading or trailing separator makes no sense (separates from nothing on one side).\n\t\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\n\t\t * moved to another toolbar in the dropdown.\n\t\t */\n\t\t&:first-child,\n\t\t&:last-child {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\tflex-basis: 100%;\n\t}\n\n\t&.ck-toolbar_grouping > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t&.ck-toolbar_vertical > .ck-toolbar__items {\n\t\tflex-direction: column;\n\t}\n\n\t&.ck-toolbar_floating > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t& > .ck-dropdown__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-toolbar-background);\n\tpadding: 0 var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\n\t& .ck.ck-toolbar__separator {\n\t\talign-self: stretch;\n\t\twidth: 1px;\n\t\tmin-width: 1px;\n\t\tbackground: var(--ck-color-toolbar-border);\n\n\t\t/*\n\t\t * These margins make the separators look better in balloon toolbars (when aligned with the "tip").\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\n\t\t */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\theight: 0;\n\t}\n\n\t& > .ck-toolbar__items {\n\t\t& > *:not(.ck-toolbar__line-break) {\n\t\t\t/* (#11) Separate toolbar items. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t/* Don\'t display a separator after an empty items container, for instance,\n\t\twhen all items were grouped */\n\t\t&:empty + .ck.ck-toolbar__separator {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/* Make sure items wrapped to the next line have v-spacing */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t&.ck-toolbar_vertical {\n\t\t/* Items in a vertical toolbar span the entire width. */\n\t\tpadding: 0;\n\n\t\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\n\t\t& > .ck-toolbar__items > .ck {\n\t\t\t/* Items in a vertical toolbar should span the horizontal space. */\n\t\t\twidth: 100%;\n\n\t\t\t/* Items in a vertical toolbar should have no margin. */\n\t\t\tmargin: 0;\n\n\t\t\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\n\t&.ck-toolbar_compact {\n\t\t/* No spacing around items. */\n\t\tpadding: 0;\n\n\t\t& > .ck-toolbar__items > * {\n\t\t\t/* Compact toolbar items have no spacing between them. */\n\t\t\tmargin: 0;\n\n\t\t\t/* "Middle" children should have no rounded corners. */\n\t\t\t&:not(:first-child):not(:last-child) {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/*\n\t\t * Dropdown button has asymmetric padding to fit the arrow.\n\t\t * This button has no arrow so let\'s revert that padding back to normal.\n\t\t */\n\t\t& > .ck.ck-button.ck-dropdown__button {\n\t\t\tpadding-left: var(--ck-spacing-tiny);\n\t\t}\n\t}\n\n\t/* A drop-down containing the nested toolbar with configured items. */\n\t& .ck-toolbar__nested-toolbar-dropdown {\n\t\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\n\t\t& > .ck-dropdown__panel {\n\t\t\tmin-width: auto;\n\t\t}\n\n\t\t& > .ck-button > .ck-button__label {\n\t\t\tmax-width: 7em;\n\t\t\twidth: auto;\n\t\t}\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t@nest .ck-toolbar-container & {\n\t\tborder: 0;\n\t}\n}\n\n/* stylelint-disable */\n\n/*\n * Styles for RTL toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="rtl"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="rtl"] {\n\t& > .ck-toolbar__items > .ck {\n\t\tmargin-right: 0;\n\t}\n\n\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\n\t\t/* (#11) Separate toolbar items. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-left: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n/*\n * Styles for LTR toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="ltr"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="ltr"] {\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-right: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n}\n\n/* stylelint-enable */\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 3935: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-tooltip-text-padding:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;z-index:calc(var(--ck-z-dialog) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip.ck-tooltip_multi-line .ck-tooltip__text{display:inline-block;max-width:200px;padding:var(--ck-tooltip-text-padding) 0;white-space:break-spaces}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css", ], names: [], mappings: "AAOA,gCCCC,6BAA8B,CAC9B,6BAA8B,CAC9B,iCAAkC,CAClC,6BAA8B,CAC9B,6BAA8B,CAC9B,8DAA+D,CAE/D,kCAAmC,CCNnC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBAAgB,CFFhB,sCACD,CCMC,kDAGC,kCAAmC,CAFnC,cAAe,CACf,eAED,CAEA,wEAEC,oBAAqB,CAErB,eAAgB,CADhB,wCAAyC,CAFzC,wBAID,CArBD,gCAwBC,eAMD,CAHC,uCACC,YACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t@mixin ck-unselectable;\n\n\tz-index: calc( var(--ck-z-dialog) + 100 );\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t--ck-balloon-border-width: 0px;\n\t--ck-balloon-arrow-offset: 0px;\n\t--ck-balloon-arrow-half-width: 4px;\n\t--ck-balloon-arrow-height: 4px;\n\t--ck-tooltip-text-padding: 4px;\n\t--ck-color-panel-background: var(--ck-color-tooltip-background);\n\n\tpadding: 0 var(--ck-spacing-medium);\n\n\t& .ck-tooltip__text {\n\t\tfont-size: .9em;\n\t\tline-height: 1.5;\n\t\tcolor: var(--ck-color-tooltip-text);\n\t}\n\n\t&.ck-tooltip_multi-line .ck-tooltip__text {\n\t\twhite-space: break-spaces;\n\t\tdisplay: inline-block;\n\t\tpadding: var(--ck-tooltip-text-padding) 0;\n\t\tmax-width: 200px;\n\t}\n\n\t/* Reset balloon panel styles */\n\tbox-shadow: none;\n\n\t/* Hide the default shadow of the .ck-balloon-panel tip */\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 7718: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck-hidden{display:none!important}:root{--ck-z-default:1;--ck-z-panel:calc(var(--ck-z-default) + 999);--ck-z-dialog:9999}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-powered-by-line-height:10px;--ck-powered-by-padding-vertical:2px;--ck-powered-by-padding-horizontal:4px;--ck-powered-by-text-color:#4f4f4f;--ck-powered-by-border-radius:var(--ck-border-radius);--ck-powered-by-background:#fff;--ck-powered-by-border-color:var(--ck-color-focus-border)}.ck.ck-balloon-panel.ck-powered-by-balloon{--ck-border-radius:var(--ck-powered-by-border-radius);background:var(--ck-powered-by-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-panel) - 1)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by{line-height:var(--ck-powered-by-line-height)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a{align-items:center;cursor:pointer;display:flex;filter:grayscale(80%);line-height:var(--ck-powered-by-line-height);opacity:.66;padding:var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label{color:var(--ck-powered-by-text-color);cursor:pointer;font-size:7.5px;font-weight:700;letter-spacing:-.2px;line-height:normal;margin-right:4px;padding-left:2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon{cursor:pointer;display:block}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a{filter:grayscale(0);opacity:1}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-powered-by-border-color)}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-dialog-background:var(--ck-custom-background);--ck-color-dialog-form-header-border:var(--ck-custom-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-color-highlight-background:#ff0;--ck-color-light-red:#fcc;--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;box-sizing:border-box;height:auto;margin:0;padding:0;position:static;text-decoration:none;transition:none;vertical-align:middle;width:auto}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_hidden.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_zindex.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_transition.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_poweredby.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css", ], names: [], mappings: "AAQA,WAGC,sBACD,CCPA,MACC,gBAAiB,CACjB,4CAA+C,CAC/C,kBACD,CCDA,oDAEC,yBACD,CCNA,MACC,gCAAiC,CACjC,oCAAqC,CACrC,sCAAuC,CACvC,kCAA2C,CAC3C,qDAAsD,CACtD,+BAA4C,CAC5C,yDACD,CAEA,2CACC,qDAAsD,CAGtD,0CAA2C,CAD3C,eAAgB,CAEhB,gBAAiB,CACjB,mCAiDD,CA/CC,6DACC,4CAoCD,CAlCC,+DAGC,kBAAmB,CAFnB,cAAe,CACf,YAAa,CAGb,qBAAsB,CACtB,4CAA6C,CAF7C,WAAY,CAGZ,qFACD,CAEA,mFASC,qCAAsC,CAFtC,cAAe,CANf,eAAgB,CAIhB,eAAiB,CAHjB,oBAAqB,CAMrB,kBAAmB,CAFnB,gBAAiB,CAHjB,gBAAiB,CACjB,wBAOD,CAEA,sEAEC,cAAe,CADf,aAED,CAGC,qEACC,mBAAqB,CACrB,SACD,CAIF,mEACC,wBACD,CAEA,mEACC,2BAA4B,CAC5B,8CACD,CChED,MACC,kCAAmD,CACnD,+BAAoD,CACpD,8BAAkD,CAClD,8BAAuD,CACvD,6BAAmD,CACnD,yBAA+C,CAC/C,8BAAsD,CACtD,oCAA4D,CAC5D,6BAAkD,CAIlD,mDAA4D,CAC5D,qEAA+E,CAC/E,qCAA4D,CAC5D,qDAA8D,CAC9D,gDAAyD,CACzD,yCAAqD,CACrD,sCAAsD,CACtD,4CAA0D,CAC1D,sCAAsD,CAItD,gDAAuD,CACvD,kDAAiE,CACjE,mDAAkE,CAClE,yDAA8D,CAE9D,uCAA6D,CAC7D,6CAAoE,CACpE,8CAAoE,CACpE,gDAAiE,CACjE,kCAAyD,CAGzD,+DAAsE,CACtE,iDAAsE,CACtE,kDAAsE,CACtE,oDAAoE,CACpE,6DAAsE,CAEtE,8BAAoD,CACpD,gCAAqD,CAErD,+CAA8D,CAC9D,qDAAiE,CACjE,+EAAqF,CACrF,oDAAuE,CACvE,yEAA8E,CAC9E,oDAAgE,CAIhE,oEAA2E,CAC3E,4DAAoE,CAIpE,wDAAiE,CACjE,4DAAmE,CAInE,2DAAoE,CACpE,mDAA6D,CAC7D,wDAAgE,CAChE,+CAA0D,CAC1D,4CAA2D,CAC3D,4DAAoE,CACpE,sCAAsD,CAItD,0DAAmE,CACnE,uFAA6F,CAC7F,oEAA2E,CAC3E,0EAA+E,CAC/E,8DAAsE,CAItE,2DAAoE,CACpE,mDAA6D,CAI7D,6DAAsE,CACtE,qDAA+D,CAI/D,uDAAgE,CAChE,uDAAiE,CAIjE,0CAAyD,CAIzD,wCAA2D,CAI3D,+BAAoD,CACpD,uDAAmE,CACnE,kDAAgE,CAIhE,oCAAyD,CAIzD,yBAAgD,CChHhD,wBAAyB,CCAzB,0CAA2C,CAK3C,gGAAiG,CAKjG,4GAA6G,CAK7G,sGAAuG,CAKvG,sDAAuD,CCvBvD,wBAAyB,CACzB,6BAA8B,CAC9B,wDAA6D,CAE7D,yBAA0B,CAC1B,2BAA4B,CAC5B,yBAA0B,CAC1B,wBAAyB,CACzB,0BAA2B,CCJ3B,kCJgHD,CI1GA,2EAkBC,oBAAqB,CANrB,sBAAuB,CADvB,QAAS,CART,qBAAsB,CAEtB,WAAY,CAIZ,QAAS,CACT,SAAU,CAJV,eAAgB,CAOhB,oBAAqB,CAErB,eAAgB,CADhB,qBAAsB,CAVtB,UAeD,CAKA,8DAGC,wBAAyB,CAEzB,0BAA2B,CAG3B,WAAY,CACZ,UAAW,CALX,iGAAkG,CAElG,eAAgB,CAChB,kBAGD,CAGC,qDACC,gBACD,CAEA,mDAEC,sBACD,CAEA,qDACC,oBACD,CAEA,mLAGC,WACD,CAEA,iNAGC,cACD,CAEA,qDAEC,yBAAoC,CADpC,YAED,CAEA,qEAGC,QAAQ,CADR,SAED,CAMD,8BAEC,gBACD,CCxFA,MACC,sBAAuB,CCAvB,gEAAiE,CAKjE,0DAA2D,CAK3D,wEAAyE,CCbzE,uBAA8B,CAC9B,mDAA2D,CAC3D,4CAAkD,CAClD,oDAA4D,CAC5D,mDAA2D,CAC3D,kDAA2D,CAC3D,yDFFD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which hides an element in DOM.\n */\n.ck-hidden {\n\t/* Override selector specificity. Otherwise, all elements with some display\n\tstyle defined will override this one, which is not a desired result. */\n\tdisplay: none !important;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-z-default: 1;\n\t--ck-z-panel: calc( var(--ck-z-default) + 999 );\n\t--ck-z-dialog: 9999;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class that disables all transitions of the element and its children.\n */\n.ck-transitions-disabled,\n.ck-transitions-disabled * {\n\ttransition: none !important;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-powered-by-line-height: 10px;\n\t--ck-powered-by-padding-vertical: 2px;\n\t--ck-powered-by-padding-horizontal: 4px;\n\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\n\t--ck-powered-by-border-radius: var(--ck-border-radius);\n\t--ck-powered-by-background: hsl(0, 0%, 100%);\n\t--ck-powered-by-border-color: var(--ck-color-focus-border);\n}\n\n.ck.ck-balloon-panel.ck-powered-by-balloon {\n\t--ck-border-radius: var(--ck-powered-by-border-radius);\n\n\tbox-shadow: none;\n\tbackground: var(--ck-powered-by-background);\n\tmin-height: unset;\n\tz-index: calc( var(--ck-z-panel) - 1 );\n\n\t& .ck.ck-powered-by {\n\t\tline-height: var(--ck-powered-by-line-height);\n\n\t\t& a {\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\topacity: .66;\n\t\t\tfilter: grayscale(80%);\n\t\t\tline-height: var(--ck-powered-by-line-height);\n\t\t\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\n\t\t}\n\n\t\t& .ck-powered-by__label {\n\t\t\tfont-size: 7.5px;\n\t\t\tletter-spacing: -.2px;\n\t\t\tpadding-left: 2px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-right: 4px;\n\t\t\tcursor: pointer;\n\t\t\tline-height: normal;\n\t\t\tcolor: var(--ck-powered-by-text-color);\n\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\tdisplay: block;\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t&:hover {\n\t\t\t& a {\n\t\t\t\tfilter: grayscale(0%);\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[class*="position_inside"] {\n\t\tborder-color: transparent;\n\t}\n\n\t&[class*="position_border"] {\n\t\tborder: var(--ck-focus-ring);\n\t\tborder-color: var(--ck-powered-by-border-color);\n\t}\n}\n\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-base-foreground: \t\t\t\t\t\t\t\thsl(0, 0%, 98%);\n\t--ck-color-base-background: \t\t\t\t\t\t\t\thsl(0, 0%, 100%);\n\t--ck-color-base-border: \t\t\t\t\t\t\t\t\thsl(220, 6%, 81%);\n\t--ck-color-base-action: \t\t\t\t\t\t\t\t\thsl(104, 50.2%, 42.5%);\n\t--ck-color-base-focus: \t\t\t\t\t\t\t\t\t\thsl(209, 92%, 70%);\n\t--ck-color-base-text: \t\t\t\t\t\t\t\t\t\thsl(0, 0%, 20%);\n\t--ck-color-base-active: \t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\t--ck-color-base-active-focus:\t\t\t\t\t\t\t\thsl(218.2, 100%, 52.5%);\n\t--ck-color-base-error:\t\t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t/* -- Generic colors ------------------------------------------------------------------------ */\n\n\t--ck-color-focus-border-coordinates: \t\t\t\t\t\t218, 81.8%, 56.9%;\n\t--ck-color-focus-border: \t\t\t\t\t\t\t\t\thsl(var(--ck-color-focus-border-coordinates));\n\t--ck-color-focus-outer-shadow:\t\t\t\t\t\t\t\thsl(212.4, 89.3%, 89%);\n\t--ck-color-focus-disabled-shadow:\t\t\t\t\t\t\thsla(209, 90%, 72%,.3);\n\t--ck-color-focus-error-shadow:\t\t\t\t\t\t\t\thsla(9,100%,56%,.3);\n\t--ck-color-text: \t\t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-shadow-drop: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.15);\n\t--ck-color-shadow-drop-active:\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.2);\n\t--ck-color-shadow-inner: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Buttons ------------------------------------------------------------------------------- */\n\n\t--ck-color-button-default-background: \t\t\t\t\t\ttransparent;\n\t--ck-color-button-default-hover-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-active-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-disabled-background: \t\t\t\ttransparent;\n\n\t--ck-color-button-on-background: \t\t\t\t\t\t\thsl(212, 100%, 97.1%);\n\t--ck-color-button-on-hover-background: \t\t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-active-background: \t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-disabled-background: \t\t\t\t\thsl(211, 15%, 95%);\n\t--ck-color-button-on-color:\t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\n\n\t--ck-color-button-action-background: \t\t\t\t\t\tvar(--ck-color-base-action);\n\t--ck-color-button-action-hover-background: \t\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-active-background: \t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-disabled-background: \t\t\t\thsl(104, 44%, 58%);\n\t--ck-color-button-action-text: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t--ck-color-button-save: \t\t\t\t\t\t\t\t\thsl(120, 100%, 27%);\n\t--ck-color-button-cancel: \t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t--ck-color-switch-button-off-background:\t\t\t\t\thsl(0, 0%, 57.6%);\n\t--ck-color-switch-button-off-hover-background:\t\t\t\thsl(0, 0%, 49%);\n\t--ck-color-switch-button-on-background:\t\t\t\t\t\tvar(--ck-color-button-action-background);\n\t--ck-color-switch-button-on-hover-background:\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-switch-button-inner-background:\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-switch-button-inner-shadow:\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Dropdown ------------------------------------------------------------------------------ */\n\n\t--ck-color-dropdown-panel-background: \t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-dropdown-panel-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Dialog -------------------------------------------------------------------------------- */\n\n\t--ck-color-dialog-background: \t\t\t\t\t\t\t\tvar(--ck-custom-background);\n\t--ck-color-dialog-form-header-border: \t\t\t\t\t\tvar(--ck-custom-border);\n\n\t/* -- Input --------------------------------------------------------------------------------- */\n\n\t--ck-color-input-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-input-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-error-border:\t\t\t\t\t\t\t\tvar(--ck-color-base-error);\n\t--ck-color-input-text: \t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-input-disabled-background: \t\t\t\t\t\thsl(0, 0%, 95%);\n\t--ck-color-input-disabled-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-disabled-text: \t\t\t\t\t\t\thsl(0, 0%, 46%);\n\n\t/* -- List ---------------------------------------------------------------------------------- */\n\n\t--ck-color-list-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-list-button-hover-background: \t\t\t\t\tvar(--ck-color-button-default-hover-background);\n\t--ck-color-list-button-on-background: \t\t\t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-background-focus: \t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-text:\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Panel --------------------------------------------------------------------------------- */\n\n\t--ck-color-panel-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-panel-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Toolbar ------------------------------------------------------------------------------- */\n\n\t--ck-color-toolbar-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-toolbar-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Tooltip ------------------------------------------------------------------------------- */\n\n\t--ck-color-tooltip-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-tooltip-text: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Engine -------------------------------------------------------------------------------- */\n\n\t--ck-color-engine-placeholder-text: \t\t\t\t\t\thsl(0, 0%, 44%);\n\n\t/* -- Upload -------------------------------------------------------------------------------- */\n\n\t--ck-color-upload-bar-background:\t\t \t\t\t\t\thsl(209, 92%, 70%);\n\n\t/* -- Link -------------------------------------------------------------------------------- */\n\n\t--ck-color-link-default:\t\t\t\t\t\t\t\t\thsl(240, 100%, 47%);\n\t--ck-color-link-selected-background:\t\t\t\t\t\thsla(201, 100%, 56%, 0.1);\n\t--ck-color-link-fake-selection:\t\t\t\t\t\t\t\thsla(201, 100%, 56%, 0.3);\n\n\t/* -- Search result highlight ---------------------------------------------------------------- */\n\n\t--ck-color-highlight-background:\t\t\t\t\t\t\thsl(60, 100%, 50%);\n\n\t/* -- Generic colors ------------------------------------------------------------------------- */\n\n\t--ck-color-light-red:\t\t\t\t\t\t\t\t\t\thsl(0, 100%, 90%);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * An opacity value of disabled UI item.\n\t */\n\t--ck-disabled-opacity: .5;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * The geometry of the of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\n\n\t/**\n\t * A visual style of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when disabled).\n\t */\n\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when has errors).\n\t */\n\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\n\n\t/**\n\t * A visual style of focused element's border or outline.\n\t */\n\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-font-size-base: 13px;\n\t--ck-line-height-base: 1.84615;\n\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\n\n\t--ck-font-size-tiny: 0.7em;\n\t--ck-font-size-small: 0.75em;\n\t--ck-font-size-normal: 1em;\n\t--ck-font-size-big: 1.4em;\n\t--ck-font-size-large: 1.8em;\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* This is super-important. This is **manually** adjusted so a button without an icon\n\tis never smaller than a button with icon, additionally making sure that text-less buttons\n\tare perfect squares. The value is also shared by other components which should stay "in-line"\n\twith buttons. */\n\t--ck-ui-component-min-height: 2.3em;\n}\n\n/**\n * Resets an element, ignoring its children.\n */\n.ck.ck-reset,\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\tbox-sizing: border-box;\n\twidth: auto;\n\theight: auto;\n\tposition: static;\n\n\t/* Do not include inheritable rules here. */\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: transparent;\n\ttext-decoration: none;\n\tvertical-align: middle;\n\ttransition: none;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\n\tword-wrap: break-word;\n}\n\n/**\n * Resets an element AND its children.\n */\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\t/* These are rule inherited by all children elements. */\n\tborder-collapse: collapse;\n\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\n\tcolor: var(--ck-color-text);\n\ttext-align: left;\n\twhite-space: nowrap;\n\tcursor: auto;\n\tfloat: none;\n}\n\n.ck-reset_all {\n\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\n\t\ttext-align: right;\n\t}\n\n\t& iframe:not(.ck-reset_all-excluded *) {\n\t\t/* For IE */\n\t\tvertical-align: inherit;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *) {\n\t\twhite-space: pre-wrap;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *),\n\t& input[type="text"]:not(.ck-reset_all-excluded *),\n\t& input[type="password"]:not(.ck-reset_all-excluded *) {\n\t\tcursor: text;\n\t}\n\n\t& textarea[disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="text"][disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="password"][disabled]:not(.ck-reset_all-excluded *) {\n\t\tcursor: default;\n\t}\n\n\t& fieldset:not(.ck-reset_all-excluded *) {\n\t\tpadding: 10px;\n\t\tborder: 2px groove hsl(255, 7%, 88%);\n\t}\n\n\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\n\t\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\n\t\tpadding: 0;\n\t\tborder: 0\n\t}\n}\n\n/**\n * Default UI rules for RTL languages.\n */\n.ck[dir="rtl"],\n.ck[dir="rtl"] .ck {\n\ttext-align: right;\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Default border-radius value.\n */\n:root{\n\t--ck-border-radius: 2px;\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * A visual style of element's inner shadow (i.e. input).\n\t */\n\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\n\n\t/**\n\t * A visual style of element's drop shadow (i.e. panel).\n\t */\n\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\n\n\t/**\n\t * A visual style of element's active shadow (i.e. comment or suggestion).\n\t */\n\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-spacing-unit: \t\t\t\t\t\t0.6em;\n\t--ck-spacing-large: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 1.5);\n\t--ck-spacing-standard: \t\t\t\t\tvar(--ck-spacing-unit);\n\t--ck-spacing-medium: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.8);\n\t--ck-spacing-small: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.5);\n\t--ck-spacing-tiny: \t\t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.3);\n\t--ck-spacing-extra-tiny: \t\t\t\tcalc(var(--ck-spacing-unit) * 0.16);\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 1089: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}@media (prefers-reduced-motion:reduce){.ck .ck-widget{transition:none}}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}@media (forced-colors:none){.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background)}}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{transition:none}}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{transition:none}}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css", "webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css", ], names: [], mappings: "AAKA,MACC,+CAAgD,CAChD,6CAAsD,CACtD,uCAAgD,CAEhD,kDAAmD,CACnD,gCAAiC,CACjC,kEACD,CAOA,8DAEC,iBAqBD,CAnBC,4EACC,iBAOD,CALC,qFAGC,aACD,CASD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CAEtD,qDAAsD,CACtD,6CAA8C,CAF9C,0CAA2C,CAI3C,aAAc,CADd,kCAAmC,CAGnC,uCAAwC,CACxC,4CAA6C,CAF7C,iCAsCD,CAlCC,8NAKC,iBACD,CAEA,0CAEC,qCAAsC,CADtC,oCAED,CAEA,2CAEC,sCAAuC,CADvC,oCAED,CAEA,8CACC,uCAAwC,CACxC,sCACD,CAEA,6CACC,uCAAwC,CACxC,qCACD,CAGA,8CAEC,QAAS,CADT,6CAAgD,CAEhD,yBACD,CChFD,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eAGC,yBAA0B,CAD1B,mBAAoB,CADpB,gDAAiD,CAGjD,6GAcD,CAZC,uCAND,eAOE,eAWF,CAVC,CAEA,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAYD,CARC,yGCnCA,2BAA2B,CCF3B,qCAA8B,CDC9B,YD2CA,CGvCA,4BACC,yGHoCC,iEGlCD,CACD,CHuCA,4EAKC,4BAA6B,CAa7B,iEAAkE,CAhBlE,qBAAsB,CAoBtB,mDAAoD,CAhBpD,SAAU,CALV,WAAY,CAsBZ,KAAM,CAFN,2BAA4B,CAT5B,6SAwCD,CA3BC,uCAzBD,4EA0BE,eA0BF,CAzBC,CAEA,qFAIC,oDAAqD,CADrD,yCAA0C,CAD1C,wCAeD,CAVC,kHACC,SAAU,CAGV,+DAKD,CAHC,uCAND,kHAOE,eAEF,CADC,CAKF,wHACC,SACD,CAID,kFAEC,oDAAqD,CADrD,SAED,CAKC,oMAEC,6CAA8C,CAD9C,SAOD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-resizer: var(--ck-color-focus-border);\n\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\n\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\n\n\t--ck-resizer-border-radius: var(--ck-border-radius);\n\t--ck-resizer-tooltip-offset: 10px;\n\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\n}\n\n.ck .ck-widget {\n\t/* This is neccessary for type around UI to be positioned properly. */\n\tposition: relative;\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n\n\t& .ck-widget__selection-handle {\n\t\tposition: absolute;\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the icon in not a subject to font-size or line-height to avoid\n\t\t\tunnecessary spacing around it. */\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n\n\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n}\n\n.ck .ck-size-view {\n\tbackground: var(--ck-color-resizer-tooltip-background);\n\tcolor: var(--ck-color-resizer-tooltip-text);\n\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\n\tborder-radius: var(--ck-resizer-border-radius);\n\tfont-size: var(--ck-font-size-tiny);\n\tdisplay: block;\n\tpadding: 0 var(--ck-spacing-small);\n\theight: var(--ck-resizer-tooltip-height);\n\tline-height: var(--ck-resizer-tooltip-height);\n\n\t&.ck-orientation-top-left,\n\t&.ck-orientation-top-right,\n\t&.ck-orientation-bottom-right,\n\t&.ck-orientation-bottom-left,\n\t&.ck-orientation-above-center {\n\t\tposition: absolute;\n\t}\n\n\t&.ck-orientation-top-left {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-top-right {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-right {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-left {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t/* Class applied if the widget is too small to contain the size label */\n\t&.ck-orientation-above-center {\n\t\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\n\t\tleft: 50%;\n\t\ttransform: translate(-50%);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-widget-outline-thickness: 3px;\n\t--ck-widget-handler-icon-size: 16px;\n\t--ck-widget-handler-animation-duration: 200ms;\n\t--ck-widget-handler-animation-curve: ease;\n\n\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\n\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\n\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\n\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\n}\n\n.ck .ck-widget {\n\toutline-width: var(--ck-widget-outline-thickness);\n\toutline-style: solid;\n\toutline-color: transparent;\n\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\n\t}\n\n\t&:hover {\n\t\toutline-color: var(--ck-color-widget-hover-border);\n\t}\n}\n\n.ck .ck-editor__nested-editable {\n\tborder: 1px solid transparent;\n\n\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\n\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\n\t&.ck-editor__nested-editable_focused,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t\t@mixin ck-media-default-colors {\n\t\t\tbackground-color: var(--ck-color-widget-editable-focus-background);\n\t\t}\n\t}\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t& .ck-widget__selection-handle {\n\t\tpadding: 4px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\n\t\tbackground-color: transparent;\n\t\topacity: 0;\n\n\t\t/* Transition:\n\t\t * background-color for the .ck-widget_selected state change,\n\t\t * visibility for hiding the handler,\n\t\t * opacity for the proper look of the icon when the handler disappears. */\n\t\ttransition:\n\t\t\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t/* Make only top corners round. */\n\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\n\t\t/* Place the drag handler outside the widget wrapper. */\n\t\ttransform: translateY(-100%);\n\t\tleft: calc(0px - var(--ck-widget-outline-thickness));\n\t\ttop: 0;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\n\t\t\twidth: var(--ck-widget-handler-icon-size);\n\t\t\theight: var(--ck-widget-handler-icon-size);\n\t\t\tcolor: var(--ck-color-widget-drag-handler-icon-color);\n\n\t\t\t/* The "selected" part of the icon is invisible by default */\n\t\t\t& .ck-icon__selected-indicator {\n\t\t\t\topacity: 0;\n\n\t\t\t\t/* Note: The animation is longer on purpose. Simply feels better. */\n\t\t\t\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\n\n\t\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\n\t\t&:hover .ck-icon .ck-icon__selected-indicator {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\topacity: 1;\n\t\tbackground-color: var(--ck-color-widget-hover-border);\n\t}\n\n\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\t& > .ck-widget__selection-handle {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--ck-color-focus-border);\n\n\t\t\t/* When the widget is selected, notify the user using the proper look of the icon. */\n\t\t\t& .ck-icon .ck-icon__selected-indicator {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* In a RTL environment, align the selection handler to the right side of the widget */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\n\tleft: auto;\n\tright: calc(0px - var(--ck-widget-outline-thickness));\n}\n\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\n.ck.ck-editor__editable.ck-read-only .ck-widget {\n\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\n\ttransition: none;\n\n\t&:not(.ck-widget_selected) {\n\t\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\n\t\t *\n\t\t * Leave the unit because this custom property is used in calc() by other features.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\n\t\t */\n\t\t--ck-widget-outline-thickness: 0px;\n\t}\n\n\t&.ck-widget_with-selection-handle {\n\t\t& .ck-widget__selection-handle,\n\t\t& .ck-widget__selection-handle:hover {\n\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t}\n\t}\n}\n\n/* Style the widget when it\'s selected but the editable it belongs to lost focus. */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck.ck-editor__editable.ck-blurred .ck-widget {\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline-color: var(--ck-color-widget-blurred-border);\n\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t& > .ck-widget__selection-handle,\n\t\t\t& > .ck-widget__selection-handle:hover {\n\t\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\n\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\n\tIn fact, anything with overflow: hidden.\n\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\n\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\n}\n', "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 6645: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, ".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}", "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgetresize.css", ], names: [], mappings: "AAKA,4BAEC,iBACD,CAEA,wBACC,YAAa,CAMb,MAAO,CAFP,mBAAoB,CAHpB,iBAAkB,CAMlB,KACD,CAGC,2EACC,aACD,CAGD,gCAIC,kBAAmB,CAHnB,iBAcD,CATC,4IAEC,kBACD,CAEA,4IAEC,kBACD,CCpCD,MACC,sBAAuB,CAGvB,yDAAiE,CACjE,6BACD,CAEA,wBACC,yCACD,CAEA,gCAGC,uCAAwC,CACxC,gDAA6D,CAC7D,6CAA8C,CAH9C,6BAA8B,CAD9B,4BAyBD,CAnBC,oEAEC,6BAA8B,CAD9B,4BAED,CAEA,qEAEC,8BAA+B,CAD/B,4BAED,CAEA,wEACC,+BAAgC,CAChC,8BACD,CAEA,uEACC,+BAAgC,CAChC,6BACD", sourcesContent: [ "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-widget_with-resizer {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n}\n\n.ck .ck-widget__resizer {\n\tdisplay: none;\n\tposition: absolute;\n\n\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\n\tpointer-events: none;\n\n\tleft: 0;\n\ttop: 0;\n}\n\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\n\t& > .ck-widget__resizer {\n\t\tdisplay: block;\n\t}\n}\n\n.ck .ck-widget__resizer__handle {\n\tposition: absolute;\n\n\t/* Resizers are the only UI elements that should interfere with a pointer device. */\n\tpointer-events: all;\n\n\t&.ck-widget__resizer__handle-top-left,\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tcursor: nwse-resize;\n\t}\n\n\t&.ck-widget__resizer__handle-top-right,\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tcursor: nesw-resize;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-resizer-size: 10px;\n\n\t/* Set the resizer with a 50% offset. */\n\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\n\t--ck-resizer-border-width: 1px;\n}\n\n.ck .ck-widget__resizer {\n\toutline: 1px solid var(--ck-color-resizer);\n}\n\n.ck .ck-widget__resizer__handle {\n\twidth: var(--ck-resizer-size);\n\theight: var(--ck-resizer-size);\n\tbackground: var(--ck-color-focus-border);\n\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\n\tborder-radius: var(--ck-resizer-border-radius);\n\n\t&.ck-widget__resizer__handle-top-left {\n\t\ttop: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-top-right {\n\t\ttop: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n}\n", ], sourceRoot: "", }, ]); const c = a; }, 698: (t, e, n) => { "use strict"; n.d(e, { A: () => c }); var i = n(4991); var o = n.n(i); var r = n(6314); var s = n.n(r); var a = s()(o()); a.push([ t.id, '.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button{transition:none}}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button svg{transition:none}}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button:hover,.ck .ck-widget .ck-widget__type-around__button:hover svg line,.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:none}}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}', "", { version: 3, sources: [ "webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css", "webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css", ], names: [], mappings: "AASC,+CACC,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,2BAwBD,CAtBC,mDAGC,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAEA,qFAGC,kBAAoB,CADpB,gDAAoD,CAGpD,0BACD,CAEA,oFAEC,mDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CAGd,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAMD,2EACC,YAAa,CAEb,MAAO,CADP,iBAAkB,CAElB,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHAEC,aAAc,CADd,qDAED,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CAGC,oDAAqD,CACrD,mBAAoB,CAFpB,+CAAgD,CAVjD,SAAU,CACV,mBAAoB,CAYnB,uMAAyM,CAJzM,8CAwED,CAhEC,uCATD,+CAUE,eA+DF,CA9DC,CAEA,mDAEC,UAAW,CAGX,cAAe,CAFf,8BAA+B,CAC/B,6BAA8B,CAH9B,UAwBD,CAlBC,uCAPD,mDAQE,eAiBF,CAhBC,CAEA,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DA4BD,CAtBE,kEACC,oDACD,CAEA,8DACC,wDACD,CAGD,uCAQE,qLACC,cACD,CAEF,CASD,uKA7FD,SAAU,CACV,mBA8FC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLAIC,uEAAkF,CADlF,mBAAoB,CADpB,2DAA4D,CAD5D,0DAID,CAOD,8GACC,gBACD,CAKA,mDAGC,mFAAoF,CAOpF,oCAAqC,CARrC,UAAW,CAOX,oCAAwC,CARxC,mBAUD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAxKD,SAAU,CACV,mBAyKC,CAoBA,6yBACC,SACD,CASF,uHACC,aAAc,CACd,iBACD,CAYG,iRAxNF,SAAU,CACV,mBAyNE,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD", sourcesContent: [ '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\toverflow: hidden;\n\t\tz-index: var(--ck-z-default);\n\n\t\t& svg {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\tz-index: calc(var(--ck-z-default) + 2);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_before {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tleft: min(10%, 30px);\n\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_after {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tright: min(10%, 30px);\n\n\t\t\ttransform: translateY(50%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n\n\t/*\n\t * When the widget is hovered the "fake caret" would normally be narrower than the\n\t * extra outline displayed around the widget. Let\'s extend the "fake caret" to match\n\t * the full width of the widget.\n\t */\n\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\n\t\tright: calc( -1 * var(--ck-widget-outline-thickness) );\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n}\n\n/*\n * Integration with the read-only mode of the editor.\n */\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the restricted editing mode (feature) of the editor.\n */\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\n */\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\n\tdisplay: none;\n}\n', '/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-widget-type-around-button-size: 20px;\n\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\n\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\n\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\n\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\n\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\n\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\n}\n\n@define-mixin ck-widget-type-around-button-visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n@define-mixin ck-widget-type-around-button-hidden {\n\topacity: 0;\n\tpointer-events: none;\n}\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\twidth: var(--ck-widget-type-around-button-size);\n\t\theight: var(--ck-widget-type-around-button-size);\n\t\tbackground: var(--ck-color-widget-type-around-button);\n\t\tborder-radius: 100px;\n\t\ttransition: opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve), background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t@mixin ck-widget-type-around-button-hidden;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: 10px;\n\t\t\theight: 8px;\n\t\t\ttransform: translate(-50%,-50%);\n\t\t\ttransition: transform .5s ease;\n\t\t\tmargin-top: 1px;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\n\t\t\t& * {\n\t\t\t\tstroke-dasharray: 10;\n\t\t\t\tstroke-dashoffset: 0;\n\n\t\t\t\tfill: none;\n\t\t\t\tstroke: var(--ck-color-widget-type-around-button-icon);\n\t\t\t\tstroke-width: 1.5px;\n\t\t\t\tstroke-linecap: round;\n\t\t\t\tstroke-linejoin: round;\n\t\t\t}\n\n\t\t\t& line {\n\t\t\t\tstroke-dasharray: 7;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\t/*\n\t\t\t * Display the "sonar" around the button when hovered.\n\t\t\t */\n\t\t\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\n\n\t\t\t/*\n\t\t\t * Animate active button\'s icon.\n\t\t\t */\n\t\t\t& svg {\n\t\t\t\t& polyline {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-dash 2s linear;\n\t\t\t\t}\n\n\t\t\t\t& line {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\tanimation: none;\n\n\t\t\t\t& svg {\n\t\t\t\t\t& polyline {\n\t\t\t\t\t\tanimation: none;\n\t\t\t\t\t}\n\n\t\t\t\t\t& line {\n\t\t\t\t\t\tanimation: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Show type around buttons when the widget gets selected or being hovered.\n\t */\n\t&.ck-widget_selected,\n\t&:hover {\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-visible;\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\n\t * and still can be hovered).\n\t */\n\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\tbackground: var(--ck-color-widget-type-around-button-hover);\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\tbackground: var(--ck-color-widget-type-around-button-active);\n\n\t\t&::after {\n\t\t\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\tborder-radius: 100px;\n\t\t\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the "before" button when the widget has a selection handle. Because some space\n\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\n\t */\n\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\n\t\tmargin-left: 20px;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& .ck-widget__type-around__fake-caret {\n\t\tpointer-events: none;\n\t\theight: 1px;\n\t\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\n\n\t\t/*\n\t\t * The semi-transparent-outline+background combo improves the contrast\n\t\t * when the background underneath the fake caret is dark.\n\t\t */\n\t\toutline: solid 1px hsla(0, 0%, 100%, .5);\n\t\tbackground: var(--ck-color-base-text);\n\t}\n\n\t/*\n\t * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t * Despite the widget being physically selected in the model, its outline should disappear.\n\t */\n\t&.ck-widget_selected {\n\t\t&.ck-widget_type-around_show-fake-caret_before,\n\t\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t\toutline-color: transparent;\n\t\t}\n\t}\n\n\t&.ck-widget_type-around_show-fake-caret_before,\n\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t/*\n\t\t * When the "fake caret" is visible we simulate that the widget is not selected\n\t\t * (despite being physically selected), so the outline color should be for the\n\t\t * unselected widget.\n\t\t */\n\t\t&.ck-widget_selected:hover {\n\t\t\toutline-color: var(--ck-color-widget-hover-border);\n\t\t}\n\n\t\t/*\n\t\t * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\n\t\t */\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\n\t\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\n\t\t */\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t&.ck-widget_selected,\n\t\t\t&.ck-widget_selected:hover {\n\t\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\t\topacity: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\n\t\t * hide the resize UI because it creates too much noise. It can be visible when the user\n\t\t * hovers the widget, though.\n\t\t */\n\t\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\n\t\t\topacity: 0\n\t\t}\n\t}\n}\n\n/*\n * Styles for the "before" button when the widget has a selection handle in an RTL environment.\n * The selection handler is aligned to the right side of the widget so there is no need to create\n * additional space for it next to the "before" button.\n */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\n\tmargin-left: 0;\n\tmargin-right: 20px;\n}\n\n/*\n * Hide type around buttons when the widget is selected as a child of a selected\n * nested editable (e.g. mulit-cell table selection).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\n */\n.ck-editor__nested-editable.ck-editor__editable_selected {\n\t& .ck-widget {\n\t\t&.ck-widget_selected,\n\t\t&:hover {\n\t\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\n */\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\n\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\n\n\t& svg * {\n\t\tstroke: hsl(0,0%,60%);\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-dash {\n\t0% {\n\t\tstroke-dashoffset: 10;\n\t}\n\t20%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-tip-dash {\n\t0%, 20% {\n\t\tstroke-dashoffset: 7;\n\t}\n\t40%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-button-sonar {\n\t0% {\n\t\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n\t50% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\n\t}\n\t100% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n}\n\n@keyframes ck-widget-type-around-fake-caret-pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t49% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t99% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n', ], sourceRoot: "", }, ]); const c = a; }, 6314: (t) => { "use strict"; t.exports = function (t) { var e = []; e.toString = function e() { return this.map(function (e) { var n = t(e); if (e[2]) { return "@media ".concat(e[2], " {").concat(n, "}"); } return n; }).join(""); }; e.i = function (t, n, i) { if (typeof t === "string") { t = [[null, t, ""]]; } var o = {}; if (i) { for (var r = 0; r < this.length; r++) { var s = this[r][0]; if (s != null) { o[s] = true; } } } for (var a = 0; a < t.length; a++) { var c = [].concat(t[a]); if (i && o[c[0]]) { continue; } if (n) { if (!c[2]) { c[2] = n; } else { c[2] = "".concat(n, " and ").concat(c[2]); } } e.push(c); } }; return e; }; }, 4991: (t) => { "use strict"; function e(t, e) { return s(t) || r(t, e) || i(t, e) || n(); } function n() { throw new TypeError( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ); } function i(t, e) { if (!t) return; if (typeof t === "string") return o(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); if (n === "Object" && t.constructor) n = t.constructor.name; if (n === "Map" || n === "Set") return Array.from(t); if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ) return o(t, e); } function o(t, e) { if (e == null || e > t.length) e = t.length; for (var n = 0, i = new Array(e); n < e; n++) { i[n] = t[n]; } return i; } function r(t, e) { var n = t && ((typeof Symbol !== "undefined" && t[Symbol.iterator]) || t["@@iterator"]); if (n == null) return; var i = []; var o = true; var r = false; var s, a; try { for (n = n.call(t); !(o = (s = n.next()).done); o = true) { i.push(s.value); if (e && i.length === e) break; } } catch (t) { r = true; a = t; } finally { try { if (!o && n["return"] != null) n["return"](); } finally { if (r) throw a; } } return i; } function s(t) { if (Array.isArray(t)) return t; } t.exports = function t(n) { var i = e(n, 4), o = i[1], r = i[3]; if (!r) { return o; } if (typeof btoa === "function") { var s = btoa(unescape(encodeURIComponent(JSON.stringify(r)))); var a = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat( s ); var c = "/*# ".concat(a, " */"); var l = r.sources.map(function (t) { return "/*# sourceURL=" .concat(r.sourceRoot || "") .concat(t, " */"); }); return [o].concat(l).concat([c]).join("\n"); } return [o].join("\n"); }; }, 5072: (t, e, n) => { "use strict"; var i = (function t() { var e; return function t() { if (typeof e === "undefined") { e = Boolean(window && document && document.all && !window.atob); } return e; }; })(); var o = (function t() { var e = {}; return function t(n) { if (typeof e[n] === "undefined") { var i = document.querySelector(n); if ( window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement ) { try { i = i.contentDocument.head; } catch (t) { i = null; } } e[n] = i; } return e[n]; }; })(); var r = []; function s(t) { var e = -1; for (var n = 0; n < r.length; n++) { if (r[n].identifier === t) { e = n; break; } } return e; } function a(t, e) { var n = {}; var i = []; for (var o = 0; o < t.length; o++) { var a = t[o]; var c = e.base ? a[0] + e.base : a[0]; var l = n[c] || 0; var d = "".concat(c, " ").concat(l); n[c] = l + 1; var u = s(d); var h = { css: a[1], media: a[2], sourceMap: a[3] }; if (u !== -1) { r[u].references++; r[u].updater(h); } else { r.push({ identifier: d, updater: f(h, e), references: 1 }); } i.push(d); } return i; } function c(t) { var e = document.createElement("style"); var i = t.attributes || {}; if (typeof i.nonce === "undefined") { var r = true ? n.nc : 0; if (r) { i.nonce = r; } } Object.keys(i).forEach(function (t) { e.setAttribute(t, i[t]); }); if (typeof t.insert === "function") { t.insert(e); } else { var s = o(t.insert || "head"); if (!s) { throw new Error( "Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid." ); } s.appendChild(e); } return e; } function l(t) { if (t.parentNode === null) { return false; } t.parentNode.removeChild(t); } var d = (function t() { var e = []; return function t(n, i) { e[n] = i; return e.filter(Boolean).join("\n"); }; })(); function u(t, e, n, i) { var o = n ? "" : i.media ? "@media ".concat(i.media, " {").concat(i.css, "}") : i.css; if (t.styleSheet) { t.styleSheet.cssText = d(e, o); } else { var r = document.createTextNode(o); var s = t.childNodes; if (s[e]) { t.removeChild(s[e]); } if (s.length) { t.insertBefore(r, s[e]); } else { t.appendChild(r); } } } function h(t, e, n) { var i = n.css; var o = n.media; var r = n.sourceMap; if (o) { t.setAttribute("media", o); } else { t.removeAttribute("media"); } if (r && typeof btoa !== "undefined") { i += "\n/*# sourceMappingURL=data:application/json;base64,".concat( btoa(unescape(encodeURIComponent(JSON.stringify(r)))), " */" ); } if (t.styleSheet) { t.styleSheet.cssText = i; } else { while (t.firstChild) { t.removeChild(t.firstChild); } t.appendChild(document.createTextNode(i)); } } var m = null; var g = 0; function f(t, e) { var n; var i; var o; if (e.singleton) { var r = g++; n = m || (m = c(e)); i = u.bind(null, n, r, false); o = u.bind(null, n, r, true); } else { n = c(e); i = h.bind(null, n, e); o = function t() { l(n); }; } i(t); return function e(n) { if (n) { if ( n.css === t.css && n.media === t.media && n.sourceMap === t.sourceMap ) { return; } i((t = n)); } else { o(); } }; } t.exports = function (t, e) { e = e || {}; if (!e.singleton && typeof e.singleton !== "boolean") { e.singleton = i(); } t = t || []; var n = a(t, e); return function t(i) { i = i || []; if (Object.prototype.toString.call(i) !== "[object Array]") { return; } for (var o = 0; o < n.length; o++) { var c = n[o]; var l = s(c); r[l].references--; } var d = a(i, e); for (var u = 0; u < n.length; u++) { var h = n[u]; var m = s(h); if (r[m].references === 0) { r[m].updater(); r.splice(m, 1); } } n = d; }; }; }, }; var e = {}; function n(i) { var o = e[i]; if (o !== undefined) { return o.exports; } var r = (e[i] = { id: i, exports: {} }); t[i](r, r.exports, n); return r.exports; } (() => { n.n = (t) => { var e = t && t.__esModule ? () => t["default"] : () => t; n.d(e, { a: e }); return e; }; })(); (() => { var t = Object.getPrototypeOf ? (t) => Object.getPrototypeOf(t) : (t) => t.__proto__; var e; n.t = function (i, o) { if (o & 1) i = this(i); if (o & 8) return i; if (typeof i === "object" && i) { if (o & 4 && i.__esModule) return i; if (o & 16 && typeof i.then === "function") return i; } var r = Object.create(null); n.r(r); var s = {}; e = e || [null, t({}), t([]), t(t)]; for ( var a = o & 2 && i; typeof a == "object" && !~e.indexOf(a); a = t(a) ) { Object.getOwnPropertyNames(a).forEach((t) => (s[t] = () => i[t])); } s["default"] = () => i; n.d(r, s); return r; }; })(); (() => { n.d = (t, e) => { for (var i in e) { if (n.o(e, i) && !n.o(t, i)) { Object.defineProperty(t, i, { enumerable: true, get: e[i] }); } } }; })(); (() => { n.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e); })(); (() => { n.r = (t) => { if (typeof Symbol !== "undefined" && Symbol.toStringTag) { Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }); } Object.defineProperty(t, "__esModule", { value: true }); }; })(); (() => { n.nc = undefined; })(); var i = {}; (() => { "use strict"; n.d(i, { default: () => Z5 }); let t; try { t = { window, document }; } catch (e) { t = { window: {}, document: {} }; } const e = t; function o() { try { return navigator.userAgent.toLowerCase(); } catch (t) { return ""; } } const r = o(); const s = { isMac: c(r), isWindows: l(r), isGecko: d(r), isSafari: u(r), isiOS: h(r), isAndroid: m(r), isBlink: g(r), get isMediaForcedColors() { return p(); }, get isMotionReduced() { return k(); }, features: { isRegExpUnicodePropertySupported: f() }, }; const a = s; function c(t) { return t.indexOf("macintosh") > -1; } function l(t) { return t.indexOf("windows") > -1; } function d(t) { return !!t.match(/gecko\/\d+/); } function u(t) { return t.indexOf(" applewebkit/") > -1 && t.indexOf("chrome") === -1; } function h(t) { return ( !!t.match(/iphone|ipad/i) || (c(t) && navigator.maxTouchPoints > 0) ); } function m(t) { return t.indexOf("android") > -1; } function g(t) { return t.indexOf("chrome/") > -1 && t.indexOf("edge/") < 0; } function f() { let t = false; try { t = "ć".search(new RegExp("[\\p{L}]", "u")) === 0; } catch (t) {} return t; } function p() { return e.window.matchMedia ? e.window.matchMedia("(forced-colors: active)").matches : false; } function k() { return e.window.matchMedia ? e.window.matchMedia("(prefers-reduced-motion)").matches : false; } function b(t, e, n, i) { n = n || function (t, e) { return t === e; }; const o = Array.isArray(t) ? t : Array.prototype.slice.call(t); const r = Array.isArray(e) ? e : Array.prototype.slice.call(e); const s = w(o, r, n); const a = i ? v(s, r.length) : C(r, s); return a; } function w(t, e, n) { const i = A(t, e, n); if (i === -1) { return { firstIndex: -1, lastIndexOld: -1, lastIndexNew: -1 }; } const o = _(t, i); const r = _(e, i); const s = A(o, r, n); const a = t.length - s; const c = e.length - s; return { firstIndex: i, lastIndexOld: a, lastIndexNew: c }; } function A(t, e, n) { for (let i = 0; i < Math.max(t.length, e.length); i++) { if (t[i] === undefined || e[i] === undefined || !n(t[i], e[i])) { return i; } } return -1; } function _(t, e) { return t.slice(e).reverse(); } function C(t, e) { const n = []; const { firstIndex: i, lastIndexOld: o, lastIndexNew: r } = e; if (r - i > 0) { n.push({ index: i, type: "insert", values: t.slice(i, r) }); } if (o - i > 0) { n.push({ index: i + (r - i), type: "delete", howMany: o - i }); } return n; } function v(t, e) { const { firstIndex: n, lastIndexOld: i, lastIndexNew: o } = t; if (n === -1) { return Array(e).fill("equal"); } let r = []; if (n > 0) { r = r.concat(Array(n).fill("equal")); } if (o - n > 0) { r = r.concat(Array(o - n).fill("insert")); } if (i - n > 0) { r = r.concat(Array(i - n).fill("delete")); } if (o < e) { r = r.concat(Array(e - o).fill("equal")); } return r; } function y(t, e, n) { n = n || function (t, e) { return t === e; }; const i = t.length; const o = e.length; if (i > 200 || o > 200 || i + o > 300) { return y.fastDiff(t, e, n, true); } let r, s; if (o < i) { const n = t; t = e; e = n; r = "delete"; s = "insert"; } else { r = "insert"; s = "delete"; } const a = t.length; const c = e.length; const l = c - a; const d = {}; const u = {}; function h(i) { const o = (u[i - 1] !== undefined ? u[i - 1] : -1) + 1; const l = u[i + 1] !== undefined ? u[i + 1] : -1; const h = o > l ? -1 : 1; if (d[i + h]) { d[i] = d[i + h].slice(0); } if (!d[i]) { d[i] = []; } d[i].push(o > l ? r : s); let m = Math.max(o, l); let g = m - i; while (g < a && m < c && n(t[g], e[m])) { g++; m++; d[i].push("equal"); } return m; } let m = 0; let g; do { for (g = -m; g < l; g++) { u[g] = h(g); } for (g = l + m; g > l; g--) { u[g] = h(g); } u[l] = h(l); m++; } while (u[l] !== c); return d[l].slice(1); } y.fastDiff = b; function x() { return function t() { t.called = true; }; } const E = x; class D { constructor(t, e) { this.source = t; this.name = e; this.path = []; this.stop = E(); this.off = E(); } } const S = new Array(256) .fill("") .map((t, e) => ("0" + e.toString(16)).slice(-2)); function T() { const t = (Math.random() * 4294967296) >>> 0; const e = (Math.random() * 4294967296) >>> 0; const n = (Math.random() * 4294967296) >>> 0; const i = (Math.random() * 4294967296) >>> 0; return ( "e" + S[(t >> 0) & 255] + S[(t >> 8) & 255] + S[(t >> 16) & 255] + S[(t >> 24) & 255] + S[(e >> 0) & 255] + S[(e >> 8) & 255] + S[(e >> 16) & 255] + S[(e >> 24) & 255] + S[(n >> 0) & 255] + S[(n >> 8) & 255] + S[(n >> 16) & 255] + S[(n >> 24) & 255] + S[(i >> 0) & 255] + S[(i >> 8) & 255] + S[(i >> 16) & 255] + S[(i >> 24) & 255] ); } const B = { get(t = "normal") { if (typeof t != "number") { return this[t] || this.normal; } else { return t; } }, highest: 1e5, high: 1e3, normal: 0, low: -1e3, lowest: -1e5, }; const M = B; function I(t, e) { const n = M.get(e.priority); for (let i = 0; i < t.length; i++) { if (M.get(t[i].priority) < n) { t.splice(i, 0, e); return; } } t.push(e); } const L = "https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html"; class N extends Error { constructor(t, e, n) { super(V(t, n)); this.name = "CKEditorError"; this.context = e; this.data = n; } is(t) { return t === "CKEditorError"; } static rethrowUnexpectedError(t, e) { if (t.is && t.is("CKEditorError")) { throw t; } const n = new N(t.message, e); n.stack = t.stack; throw n; } } function z(t, e) { console.warn(...O(t, e)); } function P(t, e) { console.error(...O(t, e)); } function R(t) { return `\nRead more: ${L}#error-${t}`; } function V(t, e) { const n = new WeakSet(); const i = (t, e) => { if (typeof e === "object" && e !== null) { if (n.has(e)) { return `[object ${e.constructor.name}]`; } n.add(e); } return e; }; const o = e ? ` ${JSON.stringify(e, i)}` : ""; const r = R(t); return t + o + r; } function O(t, e) { const n = R(t); return e ? [t, e, n] : [t, n]; } const F = "41.4.2"; const j = null && F; const H = new Date(2024, 4, 17); if (globalThis.CKEDITOR_VERSION) { throw new N("ckeditor-duplicated-modules", null); } else { globalThis.CKEDITOR_VERSION = F; } const U = Symbol("listeningTo"); const $ = Symbol("emitterId"); const q = Symbol("delegations"); const W = G(Object); function G(t) { if (!t) { return W; } class e extends t { on(t, e, n) { this.listenTo(this, t, e, n); } once(t, e, n) { let i = false; const o = (t, ...n) => { if (!i) { i = true; t.off(); e.call(this, t, ...n); } }; this.listenTo(this, t, o, n); } off(t, e) { this.stopListening(this, t, e); } listenTo(t, e, n, i = {}) { let o, r; if (!this[U]) { this[U] = {}; } const s = this[U]; if (!Q(t)) { Y(t); } const a = Q(t); if (!(o = s[a])) { o = s[a] = { emitter: t, callbacks: {} }; } if (!(r = o.callbacks[e])) { r = o.callbacks[e] = []; } r.push(n); it(this, t, e, n, i); } stopListening(t, e, n) { const i = this[U]; let o = t && Q(t); const r = i && o ? i[o] : undefined; const s = r && e ? r.callbacks[e] : undefined; if (!i || (t && !r) || (e && !s)) { return; } if (n) { ot(this, t, e, n); const i = s.indexOf(n); if (i !== -1) { if (s.length === 1) { delete r.callbacks[e]; } else { ot(this, t, e, n); } } } else if (s) { while ((n = s.pop())) { ot(this, t, e, n); } delete r.callbacks[e]; } else if (r) { for (e in r.callbacks) { this.stopListening(t, e); } delete i[o]; } else { for (o in i) { this.stopListening(i[o].emitter); } delete this[U]; } } fire(t, ...e) { try { const n = t instanceof D ? t : new D(this, t); const i = n.name; let o = et(this, i); n.path.push(this); if (o) { const t = [n, ...e]; o = Array.from(o); for (let e = 0; e < o.length; e++) { o[e].callback.apply(this, t); if (n.off.called) { delete n.off.called; this._removeEventListener(i, o[e].callback); } if (n.stop.called) { break; } } } const r = this[q]; if (r) { const t = r.get(i); const o = r.get("*"); if (t) { nt(t, n, e); } if (o) { nt(o, n, e); } } return n.return; } catch (t) { N.rethrowUnexpectedError(t, this); } } delegate(...t) { return { to: (e, n) => { if (!this[q]) { this[q] = new Map(); } t.forEach((t) => { const i = this[q].get(t); if (!i) { this[q].set(t, new Map([[e, n]])); } else { i.set(e, n); } }); }, }; } stopDelegating(t, e) { if (!this[q]) { return; } if (!t) { this[q].clear(); } else if (!e) { this[q].delete(t); } else { const n = this[q].get(t); if (n) { n.delete(e); } } } _addEventListener(t, e, n) { X(this, t); const i = tt(this, t); const o = M.get(n.priority); const r = { callback: e, priority: o }; for (const t of i) { I(t, r); } } _removeEventListener(t, e) { const n = tt(this, t); for (const t of n) { for (let n = 0; n < t.length; n++) { if (t[n].callback == e) { t.splice(n, 1); n--; } } } } } return e; } [ "on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener", ].forEach((t) => { G[t] = W.prototype[t]; }); function K(t, e) { const n = t[U]; if (n && n[e]) { return n[e].emitter; } return null; } function Y(t, e) { if (!t[$]) { t[$] = e || T(); } } function Q(t) { return t[$]; } function Z(t) { if (!t._events) { Object.defineProperty(t, "_events", { value: {} }); } return t._events; } function J() { return { callbacks: [], childEvents: [] }; } function X(t, e) { const n = Z(t); if (n[e]) { return; } let i = e; let o = null; const r = []; while (i !== "") { if (n[i]) { break; } n[i] = J(); r.push(n[i]); if (o) { n[i].childEvents.push(o); } o = i; i = i.substr(0, i.lastIndexOf(":")); } if (i !== "") { for (const t of r) { t.callbacks = n[i].callbacks.slice(); } n[i].childEvents.push(o); } } function tt(t, e) { const n = Z(t)[e]; if (!n) { return []; } let i = [n.callbacks]; for (let e = 0; e < n.childEvents.length; e++) { const o = tt(t, n.childEvents[e]); i = i.concat(o); } return i; } function et(t, e) { let n; if (!t._events || !(n = t._events[e]) || !n.callbacks.length) { if (e.indexOf(":") > -1) { return et(t, e.substr(0, e.lastIndexOf(":"))); } else { return null; } } return n.callbacks; } function nt(t, e, n) { for (let [i, o] of t) { if (!o) { o = e.name; } else if (typeof o == "function") { o = o(e.name); } const t = new D(e.source, o); t.path = [...e.path]; i.fire(t, ...n); } } function it(t, e, n, i, o) { if (e._addEventListener) { e._addEventListener(n, i, o); } else { t._addEventListener.call(e, n, i, o); } } function ot(t, e, n, i) { if (e._removeEventListener) { e._removeEventListener(n, i); } else { t._removeEventListener.call(e, n, i); } } function rt(t) { var e = typeof t; return t != null && (e == "object" || e == "function"); } const st = rt; const at = Symbol("observableProperties"); const ct = Symbol("boundObservables"); const lt = Symbol("boundProperties"); const dt = Symbol("decoratedMethods"); const ut = Symbol("decoratedOriginal"); const ht = mt(G()); function mt(t) { if (!t) { return ht; } class e extends t { set(t, e) { if (st(t)) { Object.keys(t).forEach((e) => { this.set(e, t[e]); }, this); return; } gt(this); const n = this[at]; if (t in this && !n.has(t)) { throw new N("observable-set-cannot-override", this); } Object.defineProperty(this, t, { enumerable: true, configurable: true, get() { return n.get(t); }, set(e) { const i = n.get(t); let o = this.fire(`set:${t}`, t, e, i); if (o === undefined) { o = e; } if (i !== o || !n.has(t)) { n.set(t, o); this.fire(`change:${t}`, t, o, i); } }, }); this[t] = e; } bind(...t) { if (!t.length || !bt(t)) { throw new N("observable-bind-wrong-properties", this); } if (new Set(t).size !== t.length) { throw new N("observable-bind-duplicate-properties", this); } gt(this); const e = this[lt]; t.forEach((t) => { if (e.has(t)) { throw new N("observable-bind-rebind", this); } }); const n = new Map(); t.forEach((t) => { const i = { property: t, to: [] }; e.set(t, i); n.set(t, i); }); return { to: ft, toMany: pt, _observable: this, _bindProperties: t, _to: [], _bindings: n, }; } unbind(...t) { if (!this[at]) { return; } const e = this[lt]; const n = this[ct]; if (t.length) { if (!bt(t)) { throw new N("observable-unbind-wrong-properties", this); } t.forEach((t) => { const i = e.get(t); if (!i) { return; } i.to.forEach(([t, e]) => { const o = n.get(t); const r = o[e]; r.delete(i); if (!r.size) { delete o[e]; } if (!Object.keys(o).length) { n.delete(t); this.stopListening(t, "change"); } }); e.delete(t); }); } else { n.forEach((t, e) => { this.stopListening(e, "change"); }); n.clear(); e.clear(); } } decorate(t) { gt(this); const e = this[t]; if (!e) { throw new N("observablemixin-cannot-decorate-undefined", this, { object: this, methodName: t, }); } this.on(t, (t, n) => { t.return = e.apply(this, n); }); this[t] = function (...e) { return this.fire(t, e); }; this[t][ut] = e; if (!this[dt]) { this[dt] = []; } this[dt].push(t); } stopListening(t, e, n) { if (!t && this[dt]) { for (const t of this[dt]) { this[t] = this[t][ut]; } delete this[dt]; } super.stopListening(t, e, n); } } return e; } [ "set", "bind", "unbind", "decorate", "on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener", ].forEach((t) => { mt[t] = ht.prototype[t]; }); function gt(t) { if (t[at]) { return; } Object.defineProperty(t, at, { value: new Map() }); Object.defineProperty(t, ct, { value: new Map() }); Object.defineProperty(t, lt, { value: new Map() }); } function ft(...t) { const e = wt(...t); const n = Array.from(this._bindings.keys()); const i = n.length; if (!e.callback && e.to.length > 1) { throw new N("observable-bind-to-no-callback", this); } if (i > 1 && e.callback) { throw new N("observable-bind-to-extra-callback", this); } e.to.forEach((t) => { if (t.properties.length && t.properties.length !== i) { throw new N("observable-bind-to-properties-length", this); } if (!t.properties.length) { t.properties = this._bindProperties; } }); this._to = e.to; if (e.callback) { this._bindings.get(n[0]).callback = e.callback; } vt(this._observable, this._to); _t(this); this._bindProperties.forEach((t) => { Ct(this._observable, t); }); } function pt(t, e, n) { if (this._bindings.size > 1) { throw new N("observable-bind-to-many-not-one-binding", this); } this.to(...kt(t, e), n); } function kt(t, e) { const n = t.map((t) => [t, e]); return Array.prototype.concat.apply([], n); } function bt(t) { return t.every((t) => typeof t == "string"); } function wt(...t) { if (!t.length) { throw new N("observable-bind-to-parse-error", null); } const e = { to: [] }; let n; if (typeof t[t.length - 1] == "function") { e.callback = t.pop(); } t.forEach((t) => { if (typeof t == "string") { n.properties.push(t); } else if (typeof t == "object") { n = { observable: t, properties: [] }; e.to.push(n); } else { throw new N("observable-bind-to-parse-error", null); } }); return e; } function At(t, e, n, i) { const o = t[ct]; const r = o.get(n); const s = r || {}; if (!s[i]) { s[i] = new Set(); } s[i].add(e); if (!r) { o.set(n, s); } } function _t(t) { let e; t._bindings.forEach((n, i) => { t._to.forEach((o) => { e = o.properties[n.callback ? 0 : t._bindProperties.indexOf(i)]; n.to.push([o.observable, e]); At(t._observable, n, o.observable, e); }); }); } function Ct(t, e) { const n = t[lt]; const i = n.get(e); let o; if (i.callback) { o = i.callback.apply( t, i.to.map((t) => t[0][t[1]]) ); } else { o = i.to[0]; o = o[0][o[1]]; } if (Object.prototype.hasOwnProperty.call(t, e)) { t[e] = o; } else { t.set(e, o); } } function vt(t, e) { e.forEach((e) => { const n = t[ct]; let i; if (!n.get(e.observable)) { t.listenTo(e.observable, "change", (o, r) => { i = n.get(e.observable)[r]; if (i) { i.forEach((e) => { Ct(t, e.property); }); } }); } }); } class yt { constructor() { this._replacedElements = []; } replace(t, e) { this._replacedElements.push({ element: t, newElement: e }); t.style.display = "none"; if (e) { t.parentNode.insertBefore(e, t.nextSibling); } } restore() { this._replacedElements.forEach(({ element: t, newElement: e }) => { t.style.display = ""; if (e) { e.remove(); } }); this._replacedElements = []; } } function xt(t) { let e = 0; for (const n of t) { e++; } return e; } function Et(t, e) { const n = Math.min(t.length, e.length); for (let i = 0; i < n; i++) { if (t[i] != e[i]) { return i; } } if (t.length == e.length) { return "same"; } else if (t.length < e.length) { return "prefix"; } else { return "extension"; } } function Dt(t) { return !!(t && t[Symbol.iterator]); } var St = typeof global == "object" && global && global.Object === Object && global; const Tt = St; var Bt = typeof self == "object" && self && self.Object === Object && self; var Mt = Tt || Bt || Function("return this")(); const It = Mt; var Lt = It.Symbol; const Nt = Lt; var zt = Object.prototype; var Pt = zt.hasOwnProperty; var Rt = zt.toString; var Vt = Nt ? Nt.toStringTag : undefined; function Ot(t) { var e = Pt.call(t, Vt), n = t[Vt]; try { t[Vt] = undefined; var i = true; } catch (t) {} var o = Rt.call(t); if (i) { if (e) { t[Vt] = n; } else { delete t[Vt]; } } return o; } const Ft = Ot; var jt = Object.prototype; var Ht = jt.toString; function Ut(t) { return Ht.call(t); } const $t = Ut; var qt = "[object Null]", Wt = "[object Undefined]"; var Gt = Nt ? Nt.toStringTag : undefined; function Kt(t) { if (t == null) { return t === undefined ? Wt : qt; } return Gt && Gt in Object(t) ? Ft(t) : $t(t); } const Yt = Kt; var Qt = Array.isArray; const Zt = Qt; function Jt(t) { return t != null && typeof t == "object"; } const Xt = Jt; var te = "[object String]"; function ee(t) { return typeof t == "string" || (!Zt(t) && Xt(t) && Yt(t) == te); } const ne = ee; function ie(t, e, n = {}, i = []) { const o = n && n.xmlns; const r = o ? t.createElementNS(o, e) : t.createElement(e); for (const t in n) { r.setAttribute(t, n[t]); } if (ne(i) || !Dt(i)) { i = [i]; } for (let e of i) { if (ne(e)) { e = t.createTextNode(e); } r.appendChild(e); } return r; } function oe(t, e) { return function (n) { return t(e(n)); }; } const re = oe; var se = re(Object.getPrototypeOf, Object); const ae = se; var ce = "[object Object]"; var le = Function.prototype, de = Object.prototype; var ue = le.toString; var he = de.hasOwnProperty; var me = ue.call(Object); function ge(t) { if (!Xt(t) || Yt(t) != ce) { return false; } var e = ae(t); if (e === null) { return true; } var n = he.call(e, "constructor") && e.constructor; return typeof n == "function" && n instanceof n && ue.call(n) == me; } const fe = ge; function pe() { this.__data__ = []; this.size = 0; } const ke = pe; function be(t, e) { return t === e || (t !== t && e !== e); } const we = be; function Ae(t, e) { var n = t.length; while (n--) { if (we(t[n][0], e)) { return n; } } return -1; } const _e = Ae; var Ce = Array.prototype; var ve = Ce.splice; function ye(t) { var e = this.__data__, n = _e(e, t); if (n < 0) { return false; } var i = e.length - 1; if (n == i) { e.pop(); } else { ve.call(e, n, 1); } --this.size; return true; } const xe = ye; function Ee(t) { var e = this.__data__, n = _e(e, t); return n < 0 ? undefined : e[n][1]; } const De = Ee; function Se(t) { return _e(this.__data__, t) > -1; } const Te = Se; function Be(t, e) { var n = this.__data__, i = _e(n, t); if (i < 0) { ++this.size; n.push([t, e]); } else { n[i][1] = e; } return this; } const Me = Be; function Ie(t) { var e = -1, n = t == null ? 0 : t.length; this.clear(); while (++e < n) { var i = t[e]; this.set(i[0], i[1]); } } Ie.prototype.clear = ke; Ie.prototype["delete"] = xe; Ie.prototype.get = De; Ie.prototype.has = Te; Ie.prototype.set = Me; const Le = Ie; function Ne() { this.__data__ = new Le(); this.size = 0; } const ze = Ne; function Pe(t) { var e = this.__data__, n = e["delete"](t); this.size = e.size; return n; } const Re = Pe; function Ve(t) { return this.__data__.get(t); } const Oe = Ve; function Fe(t) { return this.__data__.has(t); } const je = Fe; var He = "[object AsyncFunction]", Ue = "[object Function]", $e = "[object GeneratorFunction]", qe = "[object Proxy]"; function We(t) { if (!st(t)) { return false; } var e = Yt(t); return e == Ue || e == $e || e == He || e == qe; } const Ge = We; var Ke = It["__core-js_shared__"]; const Ye = Ke; var Qe = (function () { var t = /[^.]+$/.exec((Ye && Ye.keys && Ye.keys.IE_PROTO) || ""); return t ? "Symbol(src)_1." + t : ""; })(); function Ze(t) { return !!Qe && Qe in t; } const Je = Ze; var Xe = Function.prototype; var tn = Xe.toString; function en(t) { if (t != null) { try { return tn.call(t); } catch (t) {} try { return t + ""; } catch (t) {} } return ""; } const nn = en; var on = /[\\^$.*+?()[\]{}|]/g; var rn = /^\[object .+?Constructor\]$/; var sn = Function.prototype, an = Object.prototype; var cn = sn.toString; var ln = an.hasOwnProperty; var dn = RegExp( "^" + cn .call(ln) .replace(on, "\\$&") .replace( /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?" ) + "$" ); function un(t) { if (!st(t) || Je(t)) { return false; } var e = Ge(t) ? dn : rn; return e.test(nn(t)); } const hn = un; function mn(t, e) { return t == null ? undefined : t[e]; } const gn = mn; function fn(t, e) { var n = gn(t, e); return hn(n) ? n : undefined; } const pn = fn; var kn = pn(It, "Map"); const bn = kn; var wn = pn(Object, "create"); const An = wn; function _n() { this.__data__ = An ? An(null) : {}; this.size = 0; } const Cn = _n; function vn(t) { var e = this.has(t) && delete this.__data__[t]; this.size -= e ? 1 : 0; return e; } const yn = vn; var xn = "__lodash_hash_undefined__"; var En = Object.prototype; var Dn = En.hasOwnProperty; function Sn(t) { var e = this.__data__; if (An) { var n = e[t]; return n === xn ? undefined : n; } return Dn.call(e, t) ? e[t] : undefined; } const Tn = Sn; var Bn = Object.prototype; var Mn = Bn.hasOwnProperty; function In(t) { var e = this.__data__; return An ? e[t] !== undefined : Mn.call(e, t); } const Ln = In; var Nn = "__lodash_hash_undefined__"; function zn(t, e) { var n = this.__data__; this.size += this.has(t) ? 0 : 1; n[t] = An && e === undefined ? Nn : e; return this; } const Pn = zn; function Rn(t) { var e = -1, n = t == null ? 0 : t.length; this.clear(); while (++e < n) { var i = t[e]; this.set(i[0], i[1]); } } Rn.prototype.clear = Cn; Rn.prototype["delete"] = yn; Rn.prototype.get = Tn; Rn.prototype.has = Ln; Rn.prototype.set = Pn; const Vn = Rn; function On() { this.size = 0; this.__data__ = { hash: new Vn(), map: new (bn || Le)(), string: new Vn(), }; } const Fn = On; function jn(t) { var e = typeof t; return e == "string" || e == "number" || e == "symbol" || e == "boolean" ? t !== "__proto__" : t === null; } const Hn = jn; function Un(t, e) { var n = t.__data__; return Hn(e) ? n[typeof e == "string" ? "string" : "hash"] : n.map; } const $n = Un; function qn(t) { var e = $n(this, t)["delete"](t); this.size -= e ? 1 : 0; return e; } const Wn = qn; function Gn(t) { return $n(this, t).get(t); } const Kn = Gn; function Yn(t) { return $n(this, t).has(t); } const Qn = Yn; function Zn(t, e) { var n = $n(this, t), i = n.size; n.set(t, e); this.size += n.size == i ? 0 : 1; return this; } const Jn = Zn; function Xn(t) { var e = -1, n = t == null ? 0 : t.length; this.clear(); while (++e < n) { var i = t[e]; this.set(i[0], i[1]); } } Xn.prototype.clear = Fn; Xn.prototype["delete"] = Wn; Xn.prototype.get = Kn; Xn.prototype.has = Qn; Xn.prototype.set = Jn; const ti = Xn; var ei = 200; function ni(t, e) { var n = this.__data__; if (n instanceof Le) { var i = n.__data__; if (!bn || i.length < ei - 1) { i.push([t, e]); this.size = ++n.size; return this; } n = this.__data__ = new ti(i); } n.set(t, e); this.size = n.size; return this; } const ii = ni; function oi(t) { var e = (this.__data__ = new Le(t)); this.size = e.size; } oi.prototype.clear = ze; oi.prototype["delete"] = Re; oi.prototype.get = Oe; oi.prototype.has = je; oi.prototype.set = ii; const ri = oi; function si(t, e) { var n = -1, i = t == null ? 0 : t.length; while (++n < i) { if (e(t[n], n, t) === false) { break; } } return t; } const ai = si; var ci = (function () { try { var t = pn(Object, "defineProperty"); t({}, "", {}); return t; } catch (t) {} })(); const li = ci; function di(t, e, n) { if (e == "__proto__" && li) { li(t, e, { configurable: true, enumerable: true, value: n, writable: true, }); } else { t[e] = n; } } const ui = di; var hi = Object.prototype; var mi = hi.hasOwnProperty; function gi(t, e, n) { var i = t[e]; if (!(mi.call(t, e) && we(i, n)) || (n === undefined && !(e in t))) { ui(t, e, n); } } const fi = gi; function pi(t, e, n, i) { var o = !n; n || (n = {}); var r = -1, s = e.length; while (++r < s) { var a = e[r]; var c = i ? i(n[a], t[a], a, n, t) : undefined; if (c === undefined) { c = t[a]; } if (o) { ui(n, a, c); } else { fi(n, a, c); } } return n; } const ki = pi; function bi(t, e) { var n = -1, i = Array(t); while (++n < t) { i[n] = e(n); } return i; } const wi = bi; var Ai = "[object Arguments]"; function _i(t) { return Xt(t) && Yt(t) == Ai; } const Ci = _i; var vi = Object.prototype; var yi = vi.hasOwnProperty; var xi = vi.propertyIsEnumerable; var Ei = Ci( (function () { return arguments; })() ) ? Ci : function (t) { return Xt(t) && yi.call(t, "callee") && !xi.call(t, "callee"); }; const Di = Ei; function Si() { return false; } const Ti = Si; var Bi = typeof exports == "object" && exports && !exports.nodeType && exports; var Mi = Bi && typeof module == "object" && module && !module.nodeType && module; var Ii = Mi && Mi.exports === Bi; var Li = Ii ? It.Buffer : undefined; var Ni = Li ? Li.isBuffer : undefined; var zi = Ni || Ti; const Pi = zi; var Ri = 9007199254740991; var Vi = /^(?:0|[1-9]\d*)$/; function Oi(t, e) { var n = typeof t; e = e == null ? Ri : e; return ( !!e && (n == "number" || (n != "symbol" && Vi.test(t))) && t > -1 && t % 1 == 0 && t < e ); } const Fi = Oi; var ji = 9007199254740991; function Hi(t) { return typeof t == "number" && t > -1 && t % 1 == 0 && t <= ji; } const Ui = Hi; var $i = "[object Arguments]", qi = "[object Array]", Wi = "[object Boolean]", Gi = "[object Date]", Ki = "[object Error]", Yi = "[object Function]", Qi = "[object Map]", Zi = "[object Number]", Ji = "[object Object]", Xi = "[object RegExp]", to = "[object Set]", eo = "[object String]", no = "[object WeakMap]"; var io = "[object ArrayBuffer]", oo = "[object DataView]", ro = "[object Float32Array]", so = "[object Float64Array]", ao = "[object Int8Array]", co = "[object Int16Array]", lo = "[object Int32Array]", uo = "[object Uint8Array]", ho = "[object Uint8ClampedArray]", mo = "[object Uint16Array]", go = "[object Uint32Array]"; var fo = {}; fo[ro] = fo[so] = fo[ao] = fo[co] = fo[lo] = fo[uo] = fo[ho] = fo[mo] = fo[go] = true; fo[$i] = fo[qi] = fo[io] = fo[Wi] = fo[oo] = fo[Gi] = fo[Ki] = fo[Yi] = fo[Qi] = fo[Zi] = fo[Ji] = fo[Xi] = fo[to] = fo[eo] = fo[no] = false; function po(t) { return Xt(t) && Ui(t.length) && !!fo[Yt(t)]; } const ko = po; function bo(t) { return function (e) { return t(e); }; } const wo = bo; var Ao = typeof exports == "object" && exports && !exports.nodeType && exports; var _o = Ao && typeof module == "object" && module && !module.nodeType && module; var Co = _o && _o.exports === Ao; var vo = Co && Tt.process; var yo = (function () { try { var t = _o && _o.require && _o.require("util").types; if (t) { return t; } return vo && vo.binding && vo.binding("util"); } catch (t) {} })(); const xo = yo; var Eo = xo && xo.isTypedArray; var Do = Eo ? wo(Eo) : ko; const So = Do; var To = Object.prototype; var Bo = To.hasOwnProperty; function Mo(t, e) { var n = Zt(t), i = !n && Di(t), o = !n && !i && Pi(t), r = !n && !i && !o && So(t), s = n || i || o || r, a = s ? wi(t.length, String) : [], c = a.length; for (var l in t) { if ( (e || Bo.call(t, l)) && !( s && (l == "length" || (o && (l == "offset" || l == "parent")) || (r && (l == "buffer" || l == "byteLength" || l == "byteOffset")) || Fi(l, c)) ) ) { a.push(l); } } return a; } const Io = Mo; var Lo = Object.prototype; function No(t) { var e = t && t.constructor, n = (typeof e == "function" && e.prototype) || Lo; return t === n; } const zo = No; var Po = re(Object.keys, Object); const Ro = Po; var Vo = Object.prototype; var Oo = Vo.hasOwnProperty; function Fo(t) { if (!zo(t)) { return Ro(t); } var e = []; for (var n in Object(t)) { if (Oo.call(t, n) && n != "constructor") { e.push(n); } } return e; } const jo = Fo; function Ho(t) { return t != null && Ui(t.length) && !Ge(t); } const Uo = Ho; function $o(t) { return Uo(t) ? Io(t) : jo(t); } const qo = $o; function Wo(t, e) { return t && ki(e, qo(e), t); } const Go = Wo; function Ko(t) { var e = []; if (t != null) { for (var n in Object(t)) { e.push(n); } } return e; } const Yo = Ko; var Qo = Object.prototype; var Zo = Qo.hasOwnProperty; function Jo(t) { if (!st(t)) { return Yo(t); } var e = zo(t), n = []; for (var i in t) { if (!(i == "constructor" && (e || !Zo.call(t, i)))) { n.push(i); } } return n; } const Xo = Jo; function tr(t) { return Uo(t) ? Io(t, true) : Xo(t); } const er = tr; function nr(t, e) { return t && ki(e, er(e), t); } const ir = nr; var or = typeof exports == "object" && exports && !exports.nodeType && exports; var rr = or && typeof module == "object" && module && !module.nodeType && module; var sr = rr && rr.exports === or; var ar = sr ? It.Buffer : undefined, cr = ar ? ar.allocUnsafe : undefined; function lr(t, e) { if (e) { return t.slice(); } var n = t.length, i = cr ? cr(n) : new t.constructor(n); t.copy(i); return i; } const dr = lr; function ur(t, e) { var n = -1, i = t.length; e || (e = Array(i)); while (++n < i) { e[n] = t[n]; } return e; } const hr = ur; function mr(t, e) { var n = -1, i = t == null ? 0 : t.length, o = 0, r = []; while (++n < i) { var s = t[n]; if (e(s, n, t)) { r[o++] = s; } } return r; } const gr = mr; function fr() { return []; } const pr = fr; var kr = Object.prototype; var br = kr.propertyIsEnumerable; var wr = Object.getOwnPropertySymbols; var Ar = !wr ? pr : function (t) { if (t == null) { return []; } t = Object(t); return gr(wr(t), function (e) { return br.call(t, e); }); }; const _r = Ar; function Cr(t, e) { return ki(t, _r(t), e); } const vr = Cr; function yr(t, e) { var n = -1, i = e.length, o = t.length; while (++n < i) { t[o + n] = e[n]; } return t; } const xr = yr; var Er = Object.getOwnPropertySymbols; var Dr = !Er ? pr : function (t) { var e = []; while (t) { xr(e, _r(t)); t = ae(t); } return e; }; const Sr = Dr; function Tr(t, e) { return ki(t, Sr(t), e); } const Br = Tr; function Mr(t, e, n) { var i = e(t); return Zt(t) ? i : xr(i, n(t)); } const Ir = Mr; function Lr(t) { return Ir(t, qo, _r); } const Nr = Lr; function zr(t) { return Ir(t, er, Sr); } const Pr = zr; var Rr = pn(It, "DataView"); const Vr = Rr; var Or = pn(It, "Promise"); const Fr = Or; var jr = pn(It, "Set"); const Hr = jr; var Ur = pn(It, "WeakMap"); const $r = Ur; var qr = "[object Map]", Wr = "[object Object]", Gr = "[object Promise]", Kr = "[object Set]", Yr = "[object WeakMap]"; var Qr = "[object DataView]"; var Zr = nn(Vr), Jr = nn(bn), Xr = nn(Fr), ts = nn(Hr), es = nn($r); var ns = Yt; if ( (Vr && ns(new Vr(new ArrayBuffer(1))) != Qr) || (bn && ns(new bn()) != qr) || (Fr && ns(Fr.resolve()) != Gr) || (Hr && ns(new Hr()) != Kr) || ($r && ns(new $r()) != Yr) ) { ns = function (t) { var e = Yt(t), n = e == Wr ? t.constructor : undefined, i = n ? nn(n) : ""; if (i) { switch (i) { case Zr: return Qr; case Jr: return qr; case Xr: return Gr; case ts: return Kr; case es: return Yr; } } return e; }; } const is = ns; var os = Object.prototype; var rs = os.hasOwnProperty; function ss(t) { var e = t.length, n = new t.constructor(e); if (e && typeof t[0] == "string" && rs.call(t, "index")) { n.index = t.index; n.input = t.input; } return n; } const as = ss; var cs = It.Uint8Array; const ls = cs; function ds(t) { var e = new t.constructor(t.byteLength); new ls(e).set(new ls(t)); return e; } const us = ds; function hs(t, e) { var n = e ? us(t.buffer) : t.buffer; return new t.constructor(n, t.byteOffset, t.byteLength); } const ms = hs; var gs = /\w*$/; function fs(t) { var e = new t.constructor(t.source, gs.exec(t)); e.lastIndex = t.lastIndex; return e; } const ps = fs; var ks = Nt ? Nt.prototype : undefined, bs = ks ? ks.valueOf : undefined; function ws(t) { return bs ? Object(bs.call(t)) : {}; } const As = ws; function _s(t, e) { var n = e ? us(t.buffer) : t.buffer; return new t.constructor(n, t.byteOffset, t.length); } const Cs = _s; var vs = "[object Boolean]", ys = "[object Date]", xs = "[object Map]", Es = "[object Number]", Ds = "[object RegExp]", Ss = "[object Set]", Ts = "[object String]", Bs = "[object Symbol]"; var Ms = "[object ArrayBuffer]", Is = "[object DataView]", Ls = "[object Float32Array]", Ns = "[object Float64Array]", zs = "[object Int8Array]", Ps = "[object Int16Array]", Rs = "[object Int32Array]", Vs = "[object Uint8Array]", Os = "[object Uint8ClampedArray]", Fs = "[object Uint16Array]", js = "[object Uint32Array]"; function Hs(t, e, n) { var i = t.constructor; switch (e) { case Ms: return us(t); case vs: case ys: return new i(+t); case Is: return ms(t, n); case Ls: case Ns: case zs: case Ps: case Rs: case Vs: case Os: case Fs: case js: return Cs(t, n); case xs: return new i(); case Es: case Ts: return new i(t); case Ds: return ps(t); case Ss: return new i(); case Bs: return As(t); } } const Us = Hs; var $s = Object.create; var qs = (function () { function t() {} return function (e) { if (!st(e)) { return {}; } if ($s) { return $s(e); } t.prototype = e; var n = new t(); t.prototype = undefined; return n; }; })(); const Ws = qs; function Gs(t) { return typeof t.constructor == "function" && !zo(t) ? Ws(ae(t)) : {}; } const Ks = Gs; var Ys = "[object Map]"; function Qs(t) { return Xt(t) && is(t) == Ys; } const Zs = Qs; var Js = xo && xo.isMap; var Xs = Js ? wo(Js) : Zs; const ta = Xs; var ea = "[object Set]"; function na(t) { return Xt(t) && is(t) == ea; } const ia = na; var oa = xo && xo.isSet; var ra = oa ? wo(oa) : ia; const sa = ra; var aa = 1, ca = 2, la = 4; var da = "[object Arguments]", ua = "[object Array]", ha = "[object Boolean]", ma = "[object Date]", ga = "[object Error]", fa = "[object Function]", pa = "[object GeneratorFunction]", ka = "[object Map]", ba = "[object Number]", wa = "[object Object]", Aa = "[object RegExp]", _a = "[object Set]", Ca = "[object String]", va = "[object Symbol]", ya = "[object WeakMap]"; var xa = "[object ArrayBuffer]", Ea = "[object DataView]", Da = "[object Float32Array]", Sa = "[object Float64Array]", Ta = "[object Int8Array]", Ba = "[object Int16Array]", Ma = "[object Int32Array]", Ia = "[object Uint8Array]", La = "[object Uint8ClampedArray]", Na = "[object Uint16Array]", za = "[object Uint32Array]"; var Pa = {}; Pa[da] = Pa[ua] = Pa[xa] = Pa[Ea] = Pa[ha] = Pa[ma] = Pa[Da] = Pa[Sa] = Pa[Ta] = Pa[Ba] = Pa[Ma] = Pa[ka] = Pa[ba] = Pa[wa] = Pa[Aa] = Pa[_a] = Pa[Ca] = Pa[va] = Pa[Ia] = Pa[La] = Pa[Na] = Pa[za] = true; Pa[ga] = Pa[fa] = Pa[ya] = false; function Ra(t, e, n, i, o, r) { var s, a = e & aa, c = e & ca, l = e & la; if (n) { s = o ? n(t, i, o, r) : n(t); } if (s !== undefined) { return s; } if (!st(t)) { return t; } var d = Zt(t); if (d) { s = as(t); if (!a) { return hr(t, s); } } else { var u = is(t), h = u == fa || u == pa; if (Pi(t)) { return dr(t, a); } if (u == wa || u == da || (h && !o)) { s = c || h ? {} : Ks(t); if (!a) { return c ? Br(t, ir(s, t)) : vr(t, Go(s, t)); } } else { if (!Pa[u]) { return o ? t : {}; } s = Us(t, u, a); } } r || (r = new ri()); var m = r.get(t); if (m) { return m; } r.set(t, s); if (sa(t)) { t.forEach(function (i) { s.add(Ra(i, e, n, i, t, r)); }); } else if (ta(t)) { t.forEach(function (i, o) { s.set(o, Ra(i, e, n, o, t, r)); }); } var g = l ? (c ? Pr : Nr) : c ? er : qo; var f = d ? undefined : g(t); ai(f || t, function (i, o) { if (f) { o = i; i = t[o]; } fi(s, o, Ra(i, e, n, o, t, r)); }); return s; } const Va = Ra; var Oa = 1, Fa = 4; function ja(t, e) { e = typeof e == "function" ? e : undefined; return Va(t, Oa | Fa, e); } const Ha = ja; function Ua(t) { return Xt(t) && t.nodeType === 1 && !fe(t); } const $a = Ua; class qa { constructor(t, e) { this._config = {}; if (e) { this.define(Wa(e)); } if (t) { this._setObjectToTarget(this._config, t); } } set(t, e) { this._setToTarget(this._config, t, e); } define(t, e) { const n = true; this._setToTarget(this._config, t, e, n); } get(t) { return this._getFromSource(this._config, t); } *names() { for (const t of Object.keys(this._config)) { yield t; } } _setToTarget(t, e, n, i = false) { if (fe(e)) { this._setObjectToTarget(t, e, i); return; } const o = e.split("."); e = o.pop(); for (const e of o) { if (!fe(t[e])) { t[e] = {}; } t = t[e]; } if (fe(n)) { if (!fe(t[e])) { t[e] = {}; } t = t[e]; this._setObjectToTarget(t, n, i); return; } if (i && typeof t[e] != "undefined") { return; } t[e] = n; } _getFromSource(t, e) { const n = e.split("."); e = n.pop(); for (const e of n) { if (!fe(t[e])) { t = null; break; } t = t[e]; } return t ? Wa(t[e]) : undefined; } _setObjectToTarget(t, e, n) { Object.keys(e).forEach((i) => { this._setToTarget(t, i, e[i], n); }); } } function Wa(t) { return Ha(t, Ga); } function Ga(t) { return $a(t) || typeof t === "function" ? t : undefined; } function Ka(t) { if (t) { if (t.defaultView) { return t instanceof t.defaultView.Document; } else if (t.ownerDocument && t.ownerDocument.defaultView) { return t instanceof t.ownerDocument.defaultView.Node; } } return false; } function Ya(t) { const e = Object.prototype.toString.apply(t); if (e == "[object Window]") { return true; } if (e == "[object global]") { return true; } return false; } const Qa = Za(G()); function Za(t) { if (!t) { return Qa; } class e extends t { listenTo(t, e, n, i = {}) { if (Ka(t) || Ya(t)) { const o = { capture: !!i.useCapture, passive: !!i.usePassive }; const r = this._getProxyEmitter(t, o) || new Ja(t, o); this.listenTo(r, e, n, i); } else { super.listenTo(t, e, n, i); } } stopListening(t, e, n) { if (Ka(t) || Ya(t)) { const i = this._getAllProxyEmitters(t); for (const t of i) { this.stopListening(t, e, n); } } else { super.stopListening(t, e, n); } } _getProxyEmitter(t, e) { return K(this, tc(t, e)); } _getAllProxyEmitters(t) { return [ { capture: false, passive: false }, { capture: false, passive: true }, { capture: true, passive: false }, { capture: true, passive: true }, ] .map((e) => this._getProxyEmitter(t, e)) .filter((t) => !!t); } } return e; } [ "_getProxyEmitter", "_getAllProxyEmitters", "on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener", ].forEach((t) => { Za[t] = Qa.prototype[t]; }); class Ja extends G() { constructor(t, e) { super(); Y(this, tc(t, e)); this._domNode = t; this._options = e; } attach(t) { if (this._domListeners && this._domListeners[t]) { return; } const e = this._createDomListener(t); this._domNode.addEventListener(t, e, this._options); if (!this._domListeners) { this._domListeners = {}; } this._domListeners[t] = e; } detach(t) { let e; if ( this._domListeners[t] && (!(e = this._events[t]) || !e.callbacks.length) ) { this._domListeners[t].removeListener(); } } _addEventListener(t, e, n) { this.attach(t); G().prototype._addEventListener.call(this, t, e, n); } _removeEventListener(t, e) { G().prototype._removeEventListener.call(this, t, e); this.detach(t); } _createDomListener(t) { const e = (e) => { this.fire(t, e); }; e.removeListener = () => { this._domNode.removeEventListener(t, e, this._options); delete this._domListeners[t]; }; return e; } } function Xa(t) { return t["data-ck-expando"] || (t["data-ck-expando"] = T()); } function tc(t, e) { let n = Xa(t); for (const t of Object.keys(e).sort()) { if (e[t]) { n += "-" + t; } } return n; } function ec(t) { let e = t.parentElement; if (!e) { return null; } while (e.tagName != "BODY") { const t = e.style.overflowY || global.window.getComputedStyle(e).overflowY; if (t === "auto" || t === "scroll") { break; } e = e.parentElement; if (!e) { return null; } } return e; } function nc(t) { const e = []; let n = t; while (n && n.nodeType != Node.DOCUMENT_NODE) { e.unshift(n); n = n.parentNode; } return e; } function ic(t) { if (t instanceof HTMLTextAreaElement) { return t.value; } return t.innerHTML; } function oc(t) { const e = t.ownerDocument.defaultView.getComputedStyle(t); return { top: parseInt(e.borderTopWidth, 10), right: parseInt(e.borderRightWidth, 10), bottom: parseInt(e.borderBottomWidth, 10), left: parseInt(e.borderLeftWidth, 10), }; } function rc(t) { return Object.prototype.toString.call(t) == "[object Text]"; } function sc(t) { return Object.prototype.toString.apply(t) == "[object Range]"; } function ac(t) { if (!t || !t.parentNode) { return null; } if (t.offsetParent === e.document.body) { return null; } return t.offsetParent; } const cc = ["top", "right", "bottom", "left", "width", "height"]; class lc { constructor(t) { const e = sc(t); Object.defineProperty(this, "_source", { value: t._source || t, writable: true, enumerable: false, }); if (hc(t) || e) { if (e) { const e = lc.getDomRangeRects(t); dc(this, lc.getBoundingRect(e)); } else { dc(this, t.getBoundingClientRect()); } } else if (Ya(t)) { const { innerWidth: e, innerHeight: n } = t; dc(this, { top: 0, right: e, bottom: n, left: 0, width: e, height: n, }); } else { dc(this, t); } } clone() { return new lc(this); } moveTo(t, e) { this.top = e; this.right = t + this.width; this.bottom = e + this.height; this.left = t; return this; } moveBy(t, e) { this.top += e; this.right += t; this.left += t; this.bottom += e; return this; } getIntersection(t) { const e = { top: Math.max(this.top, t.top), right: Math.min(this.right, t.right), bottom: Math.min(this.bottom, t.bottom), left: Math.max(this.left, t.left), width: 0, height: 0, }; e.width = e.right - e.left; e.height = e.bottom - e.top; if (e.width < 0 || e.height < 0) { return null; } else { const t = new lc(e); t._source = this._source; return t; } } getIntersectionArea(t) { const e = this.getIntersection(t); if (e) { return e.getArea(); } else { return 0; } } getArea() { return this.width * this.height; } getVisible() { const t = this._source; let e = this.clone(); if (uc(t)) { return e; } let n = t; let i = t.parentNode || t.commonAncestorContainer; let o; while (i && !uc(i)) { const t = gc(i) === "visible"; if (n instanceof HTMLElement && mc(n) === "absolute") { o = n; } const r = mc(i); if (t || (o && ((r === "relative" && t) || r !== "relative"))) { n = i; i = i.parentNode; continue; } const s = new lc(i); const a = e.getIntersection(s); if (a) { if (a.getArea() < e.getArea()) { e = a; } } else { return null; } n = i; i = i.parentNode; } return e; } isEqual(t) { for (const e of cc) { if (this[e] !== t[e]) { return false; } } return true; } contains(t) { const e = this.getIntersection(t); return !!(e && e.isEqual(t)); } toAbsoluteRect() { const { scrollX: t, scrollY: n } = e.window; const i = this.clone().moveBy(t, n); if (hc(i._source)) { const t = ac(i._source); if (t) { fc(i, t); } } return i; } excludeScrollbarsAndBorders() { const t = this._source; let e, n, i; if (Ya(t)) { e = t.innerWidth - t.document.documentElement.clientWidth; n = t.innerHeight - t.document.documentElement.clientHeight; i = t.getComputedStyle(t.document.documentElement).direction; } else { const o = oc(t); e = t.offsetWidth - t.clientWidth - o.left - o.right; n = t.offsetHeight - t.clientHeight - o.top - o.bottom; i = t.ownerDocument.defaultView.getComputedStyle(t).direction; this.left += o.left; this.top += o.top; this.right -= o.right; this.bottom -= o.bottom; this.width = this.right - this.left; this.height = this.bottom - this.top; } this.width -= e; if (i === "ltr") { this.right -= e; } else { this.left += e; } this.height -= n; this.bottom -= n; return this; } static getDomRangeRects(t) { const e = []; const n = Array.from(t.getClientRects()); if (n.length) { for (const t of n) { e.push(new lc(t)); } } else { let n = t.startContainer; if (rc(n)) { n = n.parentNode; } const i = new lc(n.getBoundingClientRect()); i.right = i.left; i.width = 0; e.push(i); } return e; } static getBoundingRect(t) { const e = { left: Number.POSITIVE_INFINITY, top: Number.POSITIVE_INFINITY, right: Number.NEGATIVE_INFINITY, bottom: Number.NEGATIVE_INFINITY, width: 0, height: 0, }; let n = 0; for (const i of t) { n++; e.left = Math.min(e.left, i.left); e.top = Math.min(e.top, i.top); e.right = Math.max(e.right, i.right); e.bottom = Math.max(e.bottom, i.bottom); } if (n == 0) { return null; } e.width = e.right - e.left; e.height = e.bottom - e.top; return new lc(e); } } function dc(t, e) { for (const n of cc) { t[n] = e[n]; } } function uc(t) { if (!hc(t)) { return false; } return t === t.ownerDocument.body; } function hc(t) { return ( t !== null && typeof t === "object" && t.nodeType === 1 && typeof t.getBoundingClientRect === "function" ); } function mc(t) { return t instanceof HTMLElement ? t.ownerDocument.defaultView.getComputedStyle(t).position : "static"; } function gc(t) { return t instanceof HTMLElement ? t.ownerDocument.defaultView.getComputedStyle(t).overflow : "visible"; } function fc(t, e) { const n = new lc(e); const i = oc(e); let o = 0; let r = 0; o -= n.left; r -= n.top; o += e.scrollLeft; r += e.scrollTop; o -= i.left; r -= i.top; t.moveBy(o, r); } class pc { constructor(t, e) { if (!pc._observerInstance) { pc._createObserver(); } this._element = t; this._callback = e; pc._addElementCallback(t, e); pc._observerInstance.observe(t); } get element() { return this._element; } destroy() { pc._deleteElementCallback(this._element, this._callback); } static _addElementCallback(t, e) { if (!pc._elementCallbacks) { pc._elementCallbacks = new Map(); } let n = pc._elementCallbacks.get(t); if (!n) { n = new Set(); pc._elementCallbacks.set(t, n); } n.add(e); } static _deleteElementCallback(t, e) { const n = pc._getElementCallbacks(t); if (n) { n.delete(e); if (!n.size) { pc._elementCallbacks.delete(t); pc._observerInstance.unobserve(t); } } if (pc._elementCallbacks && !pc._elementCallbacks.size) { pc._observerInstance = null; pc._elementCallbacks = null; } } static _getElementCallbacks(t) { if (!pc._elementCallbacks) { return null; } return pc._elementCallbacks.get(t); } static _createObserver() { pc._observerInstance = new e.window.ResizeObserver((t) => { for (const e of t) { const t = pc._getElementCallbacks(e.target); if (t) { for (const n of t) { n(e); } } } }); } } pc._observerInstance = null; pc._elementCallbacks = null; const kc = pc; function bc(t, e) { if (t instanceof HTMLTextAreaElement) { t.value = e; } t.innerHTML = e; } function wc(t) { return (e) => e + t; } function Ac(t) { let e = 0; while (t.previousSibling) { t = t.previousSibling; e++; } return e; } function _c(t, e, n) { t.insertBefore(n, t.childNodes[e] || null); } function Cc(t) { return t && t.nodeType === Node.COMMENT_NODE; } function vc(t) { try { e.document.createAttribute(t); } catch (t) { return false; } return true; } function yc(t) { return !!(t && t.getClientRects && t.getClientRects().length); } function xc({ element: t, target: e, positions: n, limiter: i, fitInViewport: o, viewportOffsetConfig: r, }) { if (Ge(e)) { e = e(); } if (Ge(i)) { i = i(); } const s = ac(t); const a = Dc(r); const c = new lc(t); const l = Ec(e, a); let d; if (!l || !a.getIntersection(l)) { return null; } const u = { targetRect: l, elementRect: c, positionedElementAncestor: s, viewportRect: a, }; if (!i && !o) { d = new Tc(n[0], u); } else { if (i) { const t = Ec(i, a); if (t) { u.limiterRect = t; } } d = Sc(n, u); } return d; } function Ec(t, e) { const n = new lc(t).getVisible(); if (!n) { return null; } return n.getIntersection(e); } function Dc(t) { t = Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, t); const n = new lc(e.window); n.top += t.top; n.height -= t.top; n.bottom -= t.bottom; n.height -= t.bottom; return n; } function Sc(t, e) { const { elementRect: n } = e; const i = n.getArea(); const o = t.map((t) => new Tc(t, e)).filter((t) => !!t.name); let r = 0; let s = null; for (const t of o) { const { limiterIntersectionArea: e, viewportIntersectionArea: n } = t; if (e === i) { return t; } const o = n ** 2 + e ** 2; if (o > r) { r = o; s = t; } } return s; } class Tc { constructor(t, e) { const n = t( e.targetRect, e.elementRect, e.viewportRect, e.limiterRect ); if (!n) { return; } const { left: i, top: o, name: r, config: s } = n; this.name = r; this.config = s; this._positioningFunctionCoordinates = { left: i, top: o }; this._options = e; } get left() { return this._absoluteRect.left; } get top() { return this._absoluteRect.top; } get limiterIntersectionArea() { const t = this._options.limiterRect; if (t) { return t.getIntersectionArea(this._rect); } return 0; } get viewportIntersectionArea() { const t = this._options.viewportRect; return t.getIntersectionArea(this._rect); } get _rect() { if (this._cachedRect) { return this._cachedRect; } this._cachedRect = this._options.elementRect .clone() .moveTo( this._positioningFunctionCoordinates.left, this._positioningFunctionCoordinates.top ); return this._cachedRect; } get _absoluteRect() { if (this._cachedAbsoluteRect) { return this._cachedAbsoluteRect; } this._cachedAbsoluteRect = this._rect.toAbsoluteRect(); return this._cachedAbsoluteRect; } } function Bc(t) { const e = t.parentNode; if (e) { e.removeChild(t); } } function Mc({ target: t, viewportOffset: e = 0, ancestorOffset: n = 0, alignToTop: i, forceScroll: o, }) { const r = Oc(t); let s = r; let a = null; e = Hc(e); while (s) { let c; if (s == r) { c = Fc(t); } else { c = Fc(a); } Nc({ parent: c, getRect: () => jc(t, s), alignToTop: i, ancestorOffset: n, forceScroll: o, }); const l = jc(t, s); Lc({ window: s, rect: l, viewportOffset: e, alignToTop: i, forceScroll: o, }); if (s.parent != s) { a = s.frameElement; s = s.parent; if (!a) { return; } } else { s = null; } } } function Ic(t, e, n) { const i = Fc(t); Nc({ parent: i, getRect: () => new Rect(t), ancestorOffset: e, limiterElement: n, }); } function Lc({ window: t, rect: e, alignToTop: n, forceScroll: i, viewportOffset: o, }) { const r = e.clone().moveBy(0, o.bottom); const s = e.clone().moveBy(0, -o.top); const a = new lc(t).excludeScrollbarsAndBorders(); const c = [s, r]; const l = n && i; const d = c.every((t) => a.contains(t)); let { scrollX: u, scrollY: h } = t; const m = u; const g = h; if (l) { h -= a.top - e.top + o.top; } else if (!d) { if (Pc(s, a)) { h -= a.top - e.top + o.top; } else if (zc(r, a)) { if (n) { h += e.top - a.top - o.top; } else { h += e.bottom - a.bottom + o.bottom; } } } if (!d) { if (Rc(e, a)) { u -= a.left - e.left + o.left; } else if (Vc(e, a)) { u += e.right - a.right + o.right; } } if (u != m || h !== g) { t.scrollTo(u, h); } } function Nc({ parent: t, getRect: e, alignToTop: n, forceScroll: i, ancestorOffset: o = 0, limiterElement: r, }) { const s = Oc(t); const a = n && i; let c, l, d; const u = r || s.document.body; while (t != u) { l = e(); c = new lc(t).excludeScrollbarsAndBorders(); d = c.contains(l); if (a) { t.scrollTop -= c.top - l.top + o; } else if (!d) { if (Pc(l, c)) { t.scrollTop -= c.top - l.top + o; } else if (zc(l, c)) { if (n) { t.scrollTop += l.top - c.top - o; } else { t.scrollTop += l.bottom - c.bottom + o; } } } if (!d) { if (Rc(l, c)) { t.scrollLeft -= c.left - l.left + o; } else if (Vc(l, c)) { t.scrollLeft += l.right - c.right + o; } } t = t.parentNode; } } function zc(t, e) { return t.bottom > e.bottom; } function Pc(t, e) { return t.top < e.top; } function Rc(t, e) { return t.left < e.left; } function Vc(t, e) { return t.right > e.right; } function Oc(t) { if (sc(t)) { return t.startContainer.ownerDocument.defaultView; } else { return t.ownerDocument.defaultView; } } function Fc(t) { if (sc(t)) { let e = t.commonAncestorContainer; if (rc(e)) { e = e.parentNode; } return e; } else { return t.parentNode; } } function jc(t, e) { const n = Oc(t); const i = new lc(t); if (n === e) { return i; } else { let t = n; while (t != e) { const e = t.frameElement; const n = new lc(e).excludeScrollbarsAndBorders(); i.moveBy(n.left, n.top); t = t.parent; } } return i; } function Hc(t) { if (typeof t === "number") { return { top: t, bottom: t, left: t, right: t }; } return t; } const Uc = { ctrl: "⌃", cmd: "⌘", alt: "⌥", shift: "⇧" }; const $c = { ctrl: "Ctrl+", alt: "Alt+", shift: "Shift+" }; const qc = { 37: "←", 38: "↑", 39: "→", 40: "↓", 9: "⇥", 33: "Page Up", 34: "Page Down", }; const Wc = el(); const Gc = Object.fromEntries( Object.entries(Wc).map(([t, e]) => { let n; if (e in qc) { n = qc[e]; } else { n = t.charAt(0).toUpperCase() + t.slice(1); } return [e, n]; }) ); function Kc(t) { let e; if (typeof t == "string") { e = Wc[t.toLowerCase()]; if (!e) { throw new N("keyboard-unknown-key", null, { key: t }); } } else { e = t.keyCode + (t.altKey ? Wc.alt : 0) + (t.ctrlKey ? Wc.ctrl : 0) + (t.shiftKey ? Wc.shift : 0) + (t.metaKey ? Wc.cmd : 0); } return e; } function Yc(t) { if (typeof t == "string") { t = nl(t); } return t .map((t) => (typeof t == "string" ? Xc(t) : t)) .reduce((t, e) => e + t, 0); } function Qc(t) { let e = Yc(t); const n = Object.entries(a.isMac || a.isiOS ? Uc : $c); const i = n.reduce((t, [n, i]) => { if ((e & Wc[n]) != 0) { e &= ~Wc[n]; t += i; } return t; }, ""); return i + (e ? Gc[e] : ""); } function Zc(t) { return ( t == Wc.arrowright || t == Wc.arrowleft || t == Wc.arrowup || t == Wc.arrowdown ); } function Jc(t, e) { const n = e === "ltr"; switch (t) { case Wc.arrowleft: return n ? "left" : "right"; case Wc.arrowright: return n ? "right" : "left"; case Wc.arrowup: return "up"; case Wc.arrowdown: return "down"; } } function Xc(t) { if (t.endsWith("!")) { return Kc(t.slice(0, -1)); } const e = Kc(t); return (a.isMac || a.isiOS) && e == Wc.ctrl ? Wc.cmd : e; } function tl(t, e) { const n = Jc(t, e); return n === "down" || n === "right"; } function el() { const t = { pageup: 33, pagedown: 34, arrowleft: 37, arrowup: 38, arrowright: 39, arrowdown: 40, backspace: 8, delete: 46, enter: 13, space: 32, esc: 27, tab: 9, ctrl: 1114112, shift: 2228224, alt: 4456448, cmd: 8912896, }; for (let e = 65; e <= 90; e++) { const n = String.fromCharCode(e); t[n.toLowerCase()] = e; } for (let e = 48; e <= 57; e++) { t[e - 48] = e; } for (let e = 112; e <= 123; e++) { t["f" + (e - 111)] = e; } Object.assign(t, { "'": 222, ",": 108, "-": 109, ".": 110, "/": 111, ";": 186, "=": 187, "[": 219, "\\": 220, "]": 221, "`": 223, }); return t; } function nl(t) { return t.split("+").map((t) => t.trim()); } const il = [ "ar", "ara", "dv", "div", "fa", "per", "fas", "he", "heb", "ku", "kur", "ug", "uig", ]; function ol(t) { return il.includes(t) ? "rtl" : "ltr"; } function rl(t) { return Array.isArray(t) ? t : [t]; } function sl(t, e, n) { if ( (n !== undefined && !we(t[e], n)) || (n === undefined && !(e in t)) ) { ui(t, e, n); } } const al = sl; function cl(t) { return function (e, n, i) { var o = -1, r = Object(e), s = i(e), a = s.length; while (a--) { var c = s[t ? a : ++o]; if (n(r[c], c, r) === false) { break; } } return e; }; } const ll = cl; var dl = ll(); const ul = dl; function hl(t) { return Xt(t) && Uo(t); } const ml = hl; function gl(t, e) { if (e === "constructor" && typeof t[e] === "function") { return; } if (e == "__proto__") { return; } return t[e]; } const fl = gl; function pl(t) { return ki(t, er(t)); } const kl = pl; function bl(t, e, n, i, o, r, s) { var a = fl(t, n), c = fl(e, n), l = s.get(c); if (l) { al(t, n, l); return; } var d = r ? r(a, c, n + "", t, e, s) : undefined; var u = d === undefined; if (u) { var h = Zt(c), m = !h && Pi(c), g = !h && !m && So(c); d = c; if (h || m || g) { if (Zt(a)) { d = a; } else if (ml(a)) { d = hr(a); } else if (m) { u = false; d = dr(c, true); } else if (g) { u = false; d = Cs(c, true); } else { d = []; } } else if (fe(c) || Di(c)) { d = a; if (Di(a)) { d = kl(a); } else if (!st(a) || Ge(a)) { d = Ks(c); } } else { u = false; } } if (u) { s.set(c, d); o(d, c, i, r, s); s["delete"](c); } al(t, n, d); } const wl = bl; function Al(t, e, n, i, o) { if (t === e) { return; } ul( e, function (r, s) { o || (o = new ri()); if (st(r)) { wl(t, e, s, n, Al, i, o); } else { var a = i ? i(fl(t, s), r, s + "", t, e, o) : undefined; if (a === undefined) { a = r; } al(t, s, a); } }, er ); } const _l = Al; function Cl(t) { return t; } const vl = Cl; function yl(t, e, n) { switch (n.length) { case 0: return t.call(e); case 1: return t.call(e, n[0]); case 2: return t.call(e, n[0], n[1]); case 3: return t.call(e, n[0], n[1], n[2]); } return t.apply(e, n); } const xl = yl; var El = Math.max; function Dl(t, e, n) { e = El(e === undefined ? t.length - 1 : e, 0); return function () { var i = arguments, o = -1, r = El(i.length - e, 0), s = Array(r); while (++o < r) { s[o] = i[e + o]; } o = -1; var a = Array(e + 1); while (++o < e) { a[o] = i[o]; } a[e] = n(s); return xl(t, this, a); }; } const Sl = Dl; function Tl(t) { return function () { return t; }; } const Bl = Tl; var Ml = !li ? vl : function (t, e) { return li(t, "toString", { configurable: true, enumerable: false, value: Bl(e), writable: true, }); }; const Il = Ml; var Ll = 800, Nl = 16; var zl = Date.now; function Pl(t) { var e = 0, n = 0; return function () { var i = zl(), o = Nl - (i - n); n = i; if (o > 0) { if (++e >= Ll) { return arguments[0]; } } else { e = 0; } return t.apply(undefined, arguments); }; } const Rl = Pl; var Vl = Rl(Il); const Ol = Vl; function Fl(t, e) { return Ol(Sl(t, e, vl), t + ""); } const jl = Fl; function Hl(t, e, n) { if (!st(n)) { return false; } var i = typeof e; if ( i == "number" ? Uo(n) && Fi(e, n.length) : i == "string" && e in n ) { return we(n[e], t); } return false; } const Ul = Hl; function $l(t) { return jl(function (e, n) { var i = -1, o = n.length, r = o > 1 ? n[o - 1] : undefined, s = o > 2 ? n[2] : undefined; r = t.length > 3 && typeof r == "function" ? (o--, r) : undefined; if (s && Ul(n[0], n[1], s)) { r = o < 3 ? undefined : r; o = 1; } e = Object(e); while (++i < o) { var a = n[i]; if (a) { t(e, a, i, r); } } return e; }); } const ql = $l; var Wl = ql(function (t, e, n) { _l(t, e, n); }); const Gl = Wl; if (!e.window.CKEDITOR_TRANSLATIONS) { e.window.CKEDITOR_TRANSLATIONS = {}; } function Kl(t, e, n) { if (!global.window.CKEDITOR_TRANSLATIONS[t]) { global.window.CKEDITOR_TRANSLATIONS[t] = {}; } const i = global.window.CKEDITOR_TRANSLATIONS[t]; i.dictionary = i.dictionary || {}; i.getPluralForm = n || i.getPluralForm; Object.assign(i.dictionary, e); } function Yl(t, n, i = 1, o) { if (typeof i !== "number") { throw new N("translation-service-quantity-not-a-number", null, { quantity: i, }); } const r = o || e.window.CKEDITOR_TRANSLATIONS; const s = Xl(r); if (s === 1) { t = Object.keys(r)[0]; } const a = n.id || n.string; if (s === 0 || !Jl(t, a, r)) { if (i !== 1) { return n.plural; } return n.string; } const c = r[t].dictionary; const l = r[t].getPluralForm || ((t) => (t === 1 ? 0 : 1)); const d = c[a]; if (typeof d === "string") { return d; } const u = Number(l(i)); return d[u]; } function Ql() { if (global.window.CKEDITOR_TRANSLATIONS) { global.window.CKEDITOR_TRANSLATIONS = {}; } } function Zl(t) { return Array.isArray(t) ? t.reduce((t, e) => Gl(t, e)) : t; } function Jl(t, e, n) { return !!n[t] && !!n[t].dictionary[e]; } function Xl(t) { return Object.keys(t).length; } class td { constructor({ uiLanguage: t = "en", contentLanguage: e, translations: n, } = {}) { this.uiLanguage = t; this.contentLanguage = e || this.uiLanguage; this.uiLanguageDirection = ol(this.uiLanguage); this.contentLanguageDirection = ol(this.contentLanguage); this.translations = Zl(n); this.t = (t, e) => this._t(t, e); } get language() { console.warn( "locale-deprecated-language-property: " + "The Locale#language property has been deprecated and will be removed in the near future. " + "Please use #uiLanguage and #contentLanguage properties instead." ); return this.uiLanguage; } _t(t, e = []) { e = rl(e); if (typeof t === "string") { t = { string: t }; } const n = !!t.plural; const i = n ? e[0] : 1; const o = Yl(this.uiLanguage, t, i, this.translations); return ed(o, e); } } function ed(t, e) { return t.replace(/%(\d+)/g, (t, n) => (n < e.length ? e[n] : t)); } class nd extends G() { constructor(t = {}, e = {}) { super(); const n = Dt(t); if (!n) { e = t; } this._items = []; this._itemMap = new Map(); this._idProperty = e.idProperty || "id"; this._bindToExternalToInternalMap = new WeakMap(); this._bindToInternalToExternalMap = new WeakMap(); this._skippedIndexesFromExternal = []; if (n) { for (const e of t) { this._items.push(e); this._itemMap.set(this._getItemIdBeforeAdding(e), e); } } } get length() { return this._items.length; } get first() { return this._items[0] || null; } get last() { return this._items[this.length - 1] || null; } add(t, e) { return this.addMany([t], e); } addMany(t, e) { if (e === undefined) { e = this._items.length; } else if (e > this._items.length || e < 0) { throw new N("collection-add-item-invalid-index", this); } let n = 0; for (const i of t) { const t = this._getItemIdBeforeAdding(i); const o = e + n; this._items.splice(o, 0, i); this._itemMap.set(t, i); this.fire("add", i, o); n++; } this.fire("change", { added: t, removed: [], index: e }); return this; } get(t) { let e; if (typeof t == "string") { e = this._itemMap.get(t); } else if (typeof t == "number") { e = this._items[t]; } else { throw new N("collection-get-invalid-arg", this); } return e || null; } has(t) { if (typeof t == "string") { return this._itemMap.has(t); } else { const e = this._idProperty; const n = t[e]; return n && this._itemMap.has(n); } } getIndex(t) { let e; if (typeof t == "string") { e = this._itemMap.get(t); } else { e = t; } return e ? this._items.indexOf(e) : -1; } remove(t) { const [e, n] = this._remove(t); this.fire("change", { added: [], removed: [e], index: n }); return e; } map(t, e) { return this._items.map(t, e); } forEach(t, e) { this._items.forEach(t, e); } find(t, e) { return this._items.find(t, e); } filter(t, e) { return this._items.filter(t, e); } clear() { if (this._bindToCollection) { this.stopListening(this._bindToCollection); this._bindToCollection = null; } const t = Array.from(this._items); while (this.length) { this._remove(0); } this.fire("change", { added: [], removed: t, index: 0 }); } bindTo(t) { if (this._bindToCollection) { throw new N("collection-bind-to-rebind", this); } this._bindToCollection = t; return { as: (t) => { this._setUpBindToBinding((e) => new t(e)); }, using: (t) => { if (typeof t == "function") { this._setUpBindToBinding(t); } else { this._setUpBindToBinding((e) => e[t]); } }, }; } _setUpBindToBinding(t) { const e = this._bindToCollection; const n = (n, i, o) => { const r = e._bindToCollection == this; const s = e._bindToInternalToExternalMap.get(i); if (r && s) { this._bindToExternalToInternalMap.set(i, s); this._bindToInternalToExternalMap.set(s, i); } else { const n = t(i); if (!n) { this._skippedIndexesFromExternal.push(o); return; } let r = o; for (const t of this._skippedIndexesFromExternal) { if (o > t) { r--; } } for (const t of e._skippedIndexesFromExternal) { if (r >= t) { r++; } } this._bindToExternalToInternalMap.set(i, n); this._bindToInternalToExternalMap.set(n, i); this.add(n, r); for (let t = 0; t < e._skippedIndexesFromExternal.length; t++) { if (r <= e._skippedIndexesFromExternal[t]) { e._skippedIndexesFromExternal[t]++; } } } }; for (const t of e) { n(null, t, e.getIndex(t)); } this.listenTo(e, "add", n); this.listenTo(e, "remove", (t, e, n) => { const i = this._bindToExternalToInternalMap.get(e); if (i) { this.remove(i); } this._skippedIndexesFromExternal = this._skippedIndexesFromExternal.reduce((t, e) => { if (n < e) { t.push(e - 1); } if (n > e) { t.push(e); } return t; }, []); }); } _getItemIdBeforeAdding(t) { const e = this._idProperty; let n; if (e in t) { n = t[e]; if (typeof n != "string") { throw new N("collection-add-invalid-id", this); } if (this.get(n)) { throw new N("collection-add-item-already-exists", this); } } else { t[e] = n = T(); } return n; } _remove(t) { let e, n, i; let o = false; const r = this._idProperty; if (typeof t == "string") { n = t; i = this._itemMap.get(n); o = !i; if (i) { e = this._items.indexOf(i); } } else if (typeof t == "number") { e = t; i = this._items[e]; o = !i; if (i) { n = i[r]; } } else { i = t; n = i[r]; e = this._items.indexOf(i); o = e == -1 || !this._itemMap.get(n); } if (o) { throw new N("collection-remove-404", this); } this._items.splice(e, 1); this._itemMap.delete(n); const s = this._bindToInternalToExternalMap.get(i); this._bindToInternalToExternalMap.delete(i); this._bindToExternalToInternalMap.delete(s); this.fire("remove", i, e); return [i, e]; } [Symbol.iterator]() { return this._items[Symbol.iterator](); } } function id(t) { const e = t.next(); if (e.done) { return null; } return e.value; } class od extends Za(mt()) { constructor() { super(); this._elements = new Set(); this._nextEventLoopTimeout = null; this.set("isFocused", false); this.set("focusedElement", null); } add(t) { if (this._elements.has(t)) { throw new N("focustracker-add-element-already-exist", this); } this.listenTo(t, "focus", () => this._focus(t), { useCapture: true }); this.listenTo(t, "blur", () => this._blur(), { useCapture: true }); this._elements.add(t); } remove(t) { if (t === this.focusedElement) { this._blur(); } if (this._elements.has(t)) { this.stopListening(t); this._elements.delete(t); } } destroy() { this.stopListening(); } _focus(t) { clearTimeout(this._nextEventLoopTimeout); this.focusedElement = t; this.isFocused = true; } _blur() { clearTimeout(this._nextEventLoopTimeout); this._nextEventLoopTimeout = setTimeout(() => { this.focusedElement = null; this.isFocused = false; }, 0); } } class rd { constructor() { this._listener = new (Za())(); } listenTo(t) { this._listener.listenTo(t, "keydown", (t, e) => { this._listener.fire("_keydown:" + Kc(e), e); }); } set(t, e, n = {}) { const i = Yc(t); const o = n.priority; this._listener.listenTo( this._listener, "_keydown:" + i, (t, n) => { e(n, () => { n.preventDefault(); n.stopPropagation(); t.stop(); }); t.return = true; }, { priority: o } ); } press(t) { return !!this._listener.fire("_keydown:" + Kc(t), t); } stopListening(t) { this._listener.stopListening(t); } destroy() { this.stopListening(); } } function sd(t) { const e = new Map(); for (const n in t) { e.set(n, t[n]); } return e; } function ad(t) { if (Dt(t)) { return new Map(t); } else { return sd(t); } } const cd = 1e4; function ld(t, e, n, i) { if (Math.max(e.length, t.length) > cd) { return t .slice(0, n) .concat(e) .concat(t.slice(n + i, t.length)); } else { const o = Array.from(t); o.splice(n, i, ...e); return o; } } function dd(t, e) { let n; function i(...o) { i.cancel(); n = setTimeout(() => t(...o), e); } i.cancel = () => { clearTimeout(n); }; return i; } function ud(t) { function e(t) { if (t.length >= 40 && t.length <= 255) { return "VALID"; } else { return "INVALID"; } } if (!t) { return "INVALID"; } let n = ""; try { n = atob(t); } catch (t) { return "INVALID"; } const i = n.split("-"); const o = i[0]; const r = i[1]; if (!r) { return e(t); } try { atob(r); } catch (n) { try { atob(o); if (!atob(o).length) { return e(t); } } catch (n) { return e(t); } } if (o.length < 40 || o.length > 255) { return "INVALID"; } let s = ""; try { atob(o); s = atob(r); } catch (t) { return "INVALID"; } if (s.length !== 8) { return "INVALID"; } const a = Number(s.substring(0, 4)); const c = Number(s.substring(4, 6)) - 1; const l = Number(s.substring(6, 8)); const d = new Date(a, c, l); if (d < H || isNaN(Number(d))) { return "INVALID"; } return "VALID"; } function hd(t) { return ( !!t && t.length == 1 && /[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test( t ) ); } function md(t) { return !!t && t.length == 1 && /[\ud800-\udbff]/.test(t); } function gd(t) { return !!t && t.length == 1 && /[\udc00-\udfff]/.test(t); } function fd(t, e) { return md(t.charAt(e - 1)) && gd(t.charAt(e)); } function pd(t, e) { return hd(t.charAt(e)); } const kd = wd(); function bd(t, e) { const n = String(t).matchAll(kd); return Array.from(n).some( (t) => t.index < e && e < t.index + t[0].length ); } function wd() { const t = [ /\p{Emoji}[\u{E0020}-\u{E007E}]+\u{E007F}/u, /\p{Emoji}\u{FE0F}?\u{20E3}/u, /\p{Emoji}\u{FE0F}/u, /(?=\p{General_Category=Other_Symbol})\p{Emoji}\p{Emoji_Modifier}*/u, ]; const e = /\p{Regional_Indicator}{2}/u.source; const n = "(?:" + t.map((t) => t.source).join("|") + ")"; const i = `${e}|${n}(?:‍${n})*`; return new RegExp(i, "ug"); } class Ad extends nd { constructor(t = []) { super(t, { idProperty: "viewUid" }); this.on("add", (t, e, n) => { this._renderViewIntoCollectionParent(e, n); }); this.on("remove", (t, e) => { if (e.element && this._parentElement) { e.element.remove(); } }); this._parentElement = null; } destroy() { this.map((t) => t.destroy()); } setParent(t) { this._parentElement = t; for (const t of this) { this._renderViewIntoCollectionParent(t); } } delegate(...t) { if (!t.length || !_d(t)) { throw new N("ui-viewcollection-delegate-wrong-events", this); } return { to: (e) => { for (const n of this) { for (const i of t) { n.delegate(i).to(e); } } this.on("add", (n, i) => { for (const n of t) { i.delegate(n).to(e); } }); this.on("remove", (n, i) => { for (const n of t) { i.stopDelegating(n, e); } }); }, }; } _renderViewIntoCollectionParent(t, e) { if (!t.isRendered) { t.render(); } if (t.element && this._parentElement) { this._parentElement.insertBefore( t.element, this._parentElement.children[e] ); } } remove(t) { return super.remove(t); } } function _d(t) { return t.every((t) => typeof t == "string"); } const Cd = "http://www.w3.org/1999/xhtml"; class vd extends G() { constructor(t) { super(); Object.assign(this, Nd(Ld(t))); this._isRendered = false; this._revertData = null; } render() { const t = this._renderNode({ intoFragment: true }); this._isRendered = true; return t; } apply(t) { this._revertData = Kd(); this._renderNode({ node: t, intoFragment: false, isApplying: true, revertData: this._revertData, }); return t; } revert(t) { if (!this._revertData) { throw new N("ui-template-revert-not-applied", [this, t]); } this._revertTemplateFromNode(t, this._revertData); } *getViews() { function* t(e) { if (e.children) { for (const n of e.children) { if ($d(n)) { yield n; } else if (qd(n)) { yield* t(n); } } } } yield* t(this); } static bind(t, e) { return { to(n, i) { return new xd({ eventNameOrFunction: n, attribute: n, observable: t, emitter: e, callback: i, }); }, if(n, i, o) { return new Ed({ observable: t, emitter: e, attribute: n, valueIfTrue: i, callback: o, }); }, }; } static extend(t, e) { if (t._isRendered) { throw new N("template-extend-render", [this, t]); } Hd(t, Nd(Ld(e))); } _renderNode(t) { let e; if (t.node) { e = this.tag && this.text; } else { e = this.tag ? this.text : !this.text; } if (e) { throw new N("ui-template-wrong-syntax", this); } if (this.text) { return this._renderText(t); } else { return this._renderElement(t); } } _renderElement(t) { let e = t.node; if (!e) { e = t.node = document.createElementNS(this.ns || Cd, this.tag); } this._renderAttributes(t); this._renderElementChildren(t); this._setUpListeners(t); return e; } _renderText(t) { let e = t.node; if (e) { t.revertData.text = e.textContent; } else { e = t.node = document.createTextNode(""); } if (Dd(this.text)) { this._bindToObservable({ schema: this.text, updater: Bd(e), data: t, }); } else { e.textContent = this.text.join(""); } return e; } _renderAttributes(t) { if (!this.attributes) { return; } const e = t.node; const n = t.revertData; for (const i in this.attributes) { const o = e.getAttribute(i); const r = this.attributes[i]; if (n) { n.attributes[i] = o; } const s = Gd(r) ? r[0].ns : null; if (Dd(r)) { const a = Gd(r) ? r[0].value : r; if (n && Yd(i)) { a.unshift(o); } this._bindToObservable({ schema: a, updater: Md(e, i, s), data: t, }); } else if (i == "style" && typeof r[0] !== "string") { this._renderStyleAttribute(r[0], t); } else { if (n && o && Yd(i)) { r.unshift(o); } const t = r .map((t) => (t ? t.value || t : t)) .reduce((t, e) => t.concat(e), []) .reduce(Fd, ""); if (!Ud(t)) { e.setAttributeNS(s, i, t); } } } } _renderStyleAttribute(t, e) { const n = e.node; for (const i in t) { const o = t[i]; if (Dd(o)) { this._bindToObservable({ schema: [o], updater: Id(n, i), data: e, }); } else { n.style[i] = o; } } } _renderElementChildren(t) { const e = t.node; const n = t.intoFragment ? document.createDocumentFragment() : e; const i = t.isApplying; let o = 0; for (const r of this.children) { if (Wd(r)) { if (!i) { r.setParent(e); for (const t of r) { n.appendChild(t.element); } } } else if ($d(r)) { if (!i) { if (!r.isRendered) { r.render(); } n.appendChild(r.element); } } else if (Ka(r)) { n.appendChild(r); } else { if (i) { const e = t.revertData; const i = Kd(); e.children.push(i); r._renderNode({ intoFragment: false, node: n.childNodes[o++], isApplying: true, revertData: i, }); } else { n.appendChild(r.render()); } } } if (t.intoFragment) { e.appendChild(n); } } _setUpListeners(t) { if (!this.eventListeners) { return; } for (const e in this.eventListeners) { const n = this.eventListeners[e].map((n) => { const [i, o] = e.split("@"); return n.activateDomEventListener(i, o, t); }); if (t.revertData) { t.revertData.bindings.push(n); } } } _bindToObservable({ schema: t, updater: e, data: n }) { const i = n.revertData; Td(t, e, n); const o = t .filter((t) => !Ud(t)) .filter((t) => t.observable) .map((i) => i.activateAttributeListener(t, e, n)); if (i) { i.bindings.push(o); } } _revertTemplateFromNode(t, e) { for (const t of e.bindings) { for (const e of t) { e(); } } if (e.text) { t.textContent = e.text; return; } const n = t; for (const t in e.attributes) { const i = e.attributes[t]; if (i === null) { n.removeAttribute(t); } else { n.setAttribute(t, i); } } for (let t = 0; t < e.children.length; ++t) { this._revertTemplateFromNode(n.childNodes[t], e.children[t]); } } } class yd { constructor(t) { this.attribute = t.attribute; this.observable = t.observable; this.emitter = t.emitter; this.callback = t.callback; } getValue(t) { const e = this.observable[this.attribute]; return this.callback ? this.callback(e, t) : e; } activateAttributeListener(t, e, n) { const i = () => Td(t, e, n); this.emitter.listenTo(this.observable, `change:${this.attribute}`, i); return () => { this.emitter.stopListening( this.observable, `change:${this.attribute}`, i ); }; } } class xd extends yd { constructor(t) { super(t); this.eventNameOrFunction = t.eventNameOrFunction; } activateDomEventListener(t, e, n) { const i = (t, n) => { if (!e || n.target.matches(e)) { if (typeof this.eventNameOrFunction == "function") { this.eventNameOrFunction(n); } else { this.observable.fire(this.eventNameOrFunction, n); } } }; this.emitter.listenTo(n.node, t, i); return () => { this.emitter.stopListening(n.node, t, i); }; } } class Ed extends yd { constructor(t) { super(t); this.valueIfTrue = t.valueIfTrue; } getValue(t) { const e = super.getValue(t); return Ud(e) ? false : this.valueIfTrue || true; } } function Dd(t) { if (!t) { return false; } if (t.value) { t = t.value; } if (Array.isArray(t)) { return t.some(Dd); } else if (t instanceof yd) { return true; } return false; } function Sd(t, e) { return t.map((t) => { if (t instanceof yd) { return t.getValue(e); } return t; }); } function Td(t, e, { node: n }) { const i = Sd(t, n); let o; if (t.length == 1 && t[0] instanceof Ed) { o = i[0]; } else { o = i.reduce(Fd, ""); } if (Ud(o)) { e.remove(); } else { e.set(o); } } function Bd(t) { return { set(e) { t.textContent = e; }, remove() { t.textContent = ""; }, }; } function Md(t, e, n) { return { set(i) { t.setAttributeNS(n, e, i); }, remove() { t.removeAttributeNS(n, e); }, }; } function Id(t, e) { return { set(n) { t.style[e] = n; }, remove() { t.style[e] = null; }, }; } function Ld(t) { const e = Ha(t, (t) => { if (t && (t instanceof yd || qd(t) || $d(t) || Wd(t))) { return t; } }); return e; } function Nd(t) { if (typeof t == "string") { t = Rd(t); } else if (t.text) { Vd(t); } if (t.on) { t.eventListeners = Pd(t.on); delete t.on; } if (!t.text) { if (t.attributes) { zd(t.attributes); } const e = []; if (t.children) { if (Wd(t.children)) { e.push(t.children); } else { for (const n of t.children) { if (qd(n) || $d(n) || Ka(n)) { e.push(n); } else { e.push(new vd(n)); } } } } t.children = e; } return t; } function zd(t) { for (const e in t) { if (t[e].value) { t[e].value = rl(t[e].value); } Od(t, e); } } function Pd(t) { for (const e in t) { Od(t, e); } return t; } function Rd(t) { return { text: [t] }; } function Vd(t) { t.text = rl(t.text); } function Od(t, e) { t[e] = rl(t[e]); } function Fd(t, e) { if (Ud(e)) { return t; } else if (Ud(t)) { return e; } else { return `${t} ${e}`; } } function jd(t, e) { for (const n in e) { if (t[n]) { t[n].push(...e[n]); } else { t[n] = e[n]; } } } function Hd(t, e) { if (e.attributes) { if (!t.attributes) { t.attributes = {}; } jd(t.attributes, e.attributes); } if (e.eventListeners) { if (!t.eventListeners) { t.eventListeners = {}; } jd(t.eventListeners, e.eventListeners); } if (e.text) { t.text.push(...e.text); } if (e.children && e.children.length) { if (t.children.length != e.children.length) { throw new N("ui-template-extend-children-mismatch", t); } let n = 0; for (const i of e.children) { Hd(t.children[n++], i); } } } function Ud(t) { return !t && t !== 0; } function $d(t) { return t instanceof nu; } function qd(t) { return t instanceof vd; } function Wd(t) { return t instanceof Ad; } function Gd(t) { return st(t[0]) && t[0].ns; } function Kd() { return { children: [], bindings: [], attributes: {} }; } function Yd(t) { return t == "class" || t == "style"; } var Qd = n(5072); var Zd = n.n(Qd); var Jd = n(7718); var Xd = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Xd.insert = "head"; Xd.singleton = true; var tu = Zd()(Jd.A, Xd); const eu = Jd.A.locals || {}; class nu extends Za(mt()) { constructor(t) { super(); this.element = null; this.isRendered = false; this.locale = t; this.t = t && t.t; this._viewCollections = new nd(); this._unboundChildren = this.createCollection(); this._viewCollections.on("add", (e, n) => { n.locale = t; n.t = t && t.t; }); this.decorate("render"); } get bindTemplate() { if (this._bindTemplate) { return this._bindTemplate; } return (this._bindTemplate = vd.bind(this, this)); } createCollection(t) { const e = new Ad(t); this._viewCollections.add(e); return e; } registerChild(t) { if (!Dt(t)) { t = [t]; } for (const e of t) { this._unboundChildren.add(e); } } deregisterChild(t) { if (!Dt(t)) { t = [t]; } for (const e of t) { this._unboundChildren.remove(e); } } setTemplate(t) { this.template = new vd(t); } extendTemplate(t) { vd.extend(this.template, t); } render() { if (this.isRendered) { throw new N("ui-view-render-already-rendered", this); } if (this.template) { this.element = this.template.render(); this.registerChild(this.template.getViews()); } this.isRendered = true; } destroy() { this.stopListening(); this._viewCollections.map((t) => t.destroy()); if (this.template && this.template._revertData) { this.template.revert(this.element); } } } function iu({ emitter: t, activator: e, callback: n, contextElements: i, }) { t.listenTo(document, "mousedown", (t, o) => { if (!e()) { return; } const r = typeof o.composedPath == "function" ? o.composedPath() : []; const s = typeof i == "function" ? i() : i; for (const t of s) { if (t.contains(o.target) || r.includes(t)) { return; } } n(); }); } function ou(t) { class e extends t { disableCssTransitions() { this._isCssTransitionsDisabled = true; } enableCssTransitions() { this._isCssTransitionsDisabled = false; } constructor(...t) { super(...t); this.set("_isCssTransitionsDisabled", false); this.initializeCssTransitionDisablerMixin(); } initializeCssTransitionDisablerMixin() { this.extendTemplate({ attributes: { class: [ this.bindTemplate.if( "_isCssTransitionsDisabled", "ck-transitions-disabled" ), ], }, }); } } return e; } function ru({ view: t }) { t.listenTo( t.element, "submit", (e, n) => { n.preventDefault(); t.fire("submit"); }, { useCapture: true } ); } function su({ keystrokeHandler: t, focusTracker: e, gridItems: n, numberOfColumns: i, uiLanguageDirection: o, }) { const r = typeof i === "number" ? () => i : i; t.set( "arrowright", s((t, e) => (o === "rtl" ? c(t, e.length) : a(t, e.length))) ); t.set( "arrowleft", s((t, e) => (o === "rtl" ? a(t, e.length) : c(t, e.length))) ); t.set( "arrowup", s((t, e) => { let n = t - r(); if (n < 0) { n = t + r() * Math.floor(e.length / r()); if (n > e.length - 1) { n -= r(); } } return n; }) ); t.set( "arrowdown", s((t, e) => { let n = t + r(); if (n > e.length - 1) { n = t % r(); } return n; }) ); function s(t) { return (i) => { const o = n.find((t) => t.element === e.focusedElement); const r = n.getIndex(o); const s = t(r, n); n.get(s).focus(); i.stopPropagation(); i.preventDefault(); }; } function a(t, e) { if (t === e - 1) { return 0; } else { return t + 1; } } function c(t, e) { if (t === 0) { return e - 1; } else { return t - 1; } } } class au extends mt() { constructor(t) { super(); this._disableStack = new Set(); this.editor = t; this.set("isEnabled", true); } forceDisabled(t) { this._disableStack.add(t); if (this._disableStack.size == 1) { this.on("set:isEnabled", cu, { priority: "highest" }); this.isEnabled = false; } } clearForceDisabled(t) { this._disableStack.delete(t); if (this._disableStack.size == 0) { this.off("set:isEnabled", cu); this.isEnabled = true; } } destroy() { this.stopListening(); } static get isContextPlugin() { return false; } } function cu(t) { t.return = false; t.stop(); } class lu extends mt() { constructor(t) { super(); this.editor = t; this.set("value", undefined); this.set("isEnabled", false); this._affectsData = true; this._isEnabledBasedOnSelection = true; this._disableStack = new Set(); this.decorate("execute"); this.listenTo(this.editor.model.document, "change", () => { this.refresh(); }); this.listenTo(t, "change:isReadOnly", () => { this.refresh(); }); this.on( "set:isEnabled", (e) => { if (!this.affectsData) { return; } const n = t.model.document.selection; const i = n.getFirstPosition().root.rootName == "$graveyard"; const o = !i && t.model.canEditAt(n); if (t.isReadOnly || (this._isEnabledBasedOnSelection && !o)) { e.return = false; e.stop(); } }, { priority: "highest" } ); this.on( "execute", (t) => { if (!this.isEnabled) { t.stop(); } }, { priority: "high" } ); } get affectsData() { return this._affectsData; } set affectsData(t) { this._affectsData = t; } refresh() { this.isEnabled = true; } forceDisabled(t) { this._disableStack.add(t); if (this._disableStack.size == 1) { this.on("set:isEnabled", du, { priority: "highest" }); this.isEnabled = false; } } clearForceDisabled(t) { this._disableStack.delete(t); if (this._disableStack.size == 0) { this.off("set:isEnabled", du); this.refresh(); } } execute(...t) { return undefined; } destroy() { this.stopListening(); } } function du(t) { t.return = false; t.stop(); } class uu extends lu { constructor() { super(...arguments); this._childCommandsDefinitions = []; } refresh() {} execute(...t) { const e = this._getFirstEnabledCommand(); return !!e && e.execute(t); } registerChildCommand(t, e = {}) { I(this._childCommandsDefinitions, { command: t, priority: e.priority || "normal", }); t.on("change:isEnabled", () => this._checkEnabled()); this._checkEnabled(); } _checkEnabled() { this.isEnabled = !!this._getFirstEnabledCommand(); } _getFirstEnabledCommand() { const t = this._childCommandsDefinitions.find( ({ command: t }) => t.isEnabled ); return t && t.command; } } class hu extends G() { constructor(t, e = [], n = []) { super(); this._plugins = new Map(); this._context = t; this._availablePlugins = new Map(); for (const t of e) { if (t.pluginName) { this._availablePlugins.set(t.pluginName, t); } } this._contextPlugins = new Map(); for (const [t, e] of n) { this._contextPlugins.set(t, e); this._contextPlugins.set(e, t); if (t.pluginName) { this._availablePlugins.set(t.pluginName, t); } } } *[Symbol.iterator]() { for (const t of this._plugins) { if (typeof t[0] == "function") { yield t; } } } get(t) { const e = this._plugins.get(t); if (!e) { let e = t; if (typeof t == "function") { e = t.pluginName || t.name; } throw new N("plugincollection-plugin-not-loaded", this._context, { plugin: e, }); } return e; } has(t) { return this._plugins.has(t); } init(t, e = [], n = []) { const i = this; const o = this._context; h(t); g(t); const r = t.filter((t) => !d(t, e)); const s = [...m(r)]; A(s, n); const a = b(s); return w(a, "init") .then(() => w(a, "afterInit")) .then(() => a); function c(t) { return typeof t === "function"; } function l(t) { return c(t) && !!t.isContextPlugin; } function d(t, e) { return e.some((e) => { if (e === t) { return true; } if (u(t) === e) { return true; } if (u(e) === t) { return true; } return false; }); } function u(t) { return c(t) ? t.pluginName || t.name : t; } function h(t, e = new Set()) { t.forEach((t) => { if (!c(t)) { return; } if (e.has(t)) { return; } e.add(t); if (t.pluginName && !i._availablePlugins.has(t.pluginName)) { i._availablePlugins.set(t.pluginName, t); } if (t.requires) { h(t.requires, e); } }); } function m(t, e = new Set()) { return t .map((t) => (c(t) ? t : i._availablePlugins.get(t))) .reduce((t, n) => { if (e.has(n)) { return t; } e.add(n); if (n.requires) { g(n.requires, n); m(n.requires, e).forEach((e) => t.add(e)); } return t.add(n); }, new Set()); } function g(t, e = null) { t.map((t) => (c(t) ? t : i._availablePlugins.get(t) || t)).forEach( (t) => { f(t, e); p(t, e); k(t, e); } ); } function f(t, e) { if (c(t)) { return; } if (e) { throw new N("plugincollection-soft-required", o, { missingPlugin: t, requiredBy: u(e), }); } throw new N("plugincollection-plugin-not-found", o, { plugin: t }); } function p(t, e) { if (!l(e)) { return; } if (l(t)) { return; } throw new N("plugincollection-context-required", o, { plugin: u(t), requiredBy: u(e), }); } function k(t, n) { if (!n) { return; } if (!d(t, e)) { return; } throw new N("plugincollection-required", o, { plugin: u(t), requiredBy: u(n), }); } function b(t) { return t.map((t) => { let e = i._contextPlugins.get(t); e = e || new t(o); i._add(t, e); return e; }); } function w(t, e) { return t.reduce((t, n) => { if (!n[e]) { return t; } if (i._contextPlugins.has(n)) { return t; } return t.then(n[e].bind(n)); }, Promise.resolve()); } function A(t, e) { for (const n of e) { if (typeof n != "function") { throw new N( "plugincollection-replace-plugin-invalid-type", null, { pluginItem: n } ); } const e = n.pluginName; if (!e) { throw new N( "plugincollection-replace-plugin-missing-name", null, { pluginItem: n } ); } if (n.requires && n.requires.length) { throw new N( "plugincollection-plugin-for-replacing-cannot-have-dependencies", null, { pluginName: e } ); } const o = i._availablePlugins.get(e); if (!o) { throw new N( "plugincollection-plugin-for-replacing-not-exist", null, { pluginName: e } ); } const r = t.indexOf(o); if (r === -1) { if (i._contextPlugins.has(o)) { return; } throw new N( "plugincollection-plugin-for-replacing-not-loaded", null, { pluginName: e } ); } if (o.requires && o.requires.length) { throw new N( "plugincollection-replaced-plugin-cannot-have-dependencies", null, { pluginName: e } ); } t.splice(r, 1, n); i._availablePlugins.set(e, n); } } } destroy() { const t = []; for (const [, e] of this) { if ( typeof e.destroy == "function" && !this._contextPlugins.has(e) ) { t.push(e.destroy()); } } return Promise.all(t); } _add(t, e) { this._plugins.set(t, e); const n = t.pluginName; if (!n) { return; } if (this._plugins.has(n)) { throw new N("plugincollection-plugin-name-conflict", null, { pluginName: n, plugin1: this._plugins.get(n).constructor, plugin2: t, }); } this._plugins.set(n, e); } } class mu { constructor(t) { this._contextOwner = null; const { translations: e, ...n } = t || {}; this.config = new qa(n, this.constructor.defaultConfig); const i = this.constructor.builtinPlugins; this.config.define("plugins", i); this.plugins = new hu(this, i); const o = this.config.get("language") || {}; this.locale = new td({ uiLanguage: typeof o === "string" ? o : o.ui, contentLanguage: this.config.get("language.content"), translations: e, }); this.t = this.locale.t; this.editors = new nd(); } initPlugins() { const t = this.config.get("plugins") || []; const e = this.config.get("substitutePlugins") || []; for (const n of t.concat(e)) { if (typeof n != "function") { throw new N("context-initplugins-constructor-only", null, { Plugin: n, }); } if (n.isContextPlugin !== true) { throw new N("context-initplugins-invalid-plugin", null, { Plugin: n, }); } } return this.plugins.init(t, [], e); } destroy() { return Promise.all(Array.from(this.editors, (t) => t.destroy())).then( () => this.plugins.destroy() ); } _addEditor(t, e) { if (this._contextOwner) { throw new N("context-addeditor-private-context"); } this.editors.add(t); if (e) { this._contextOwner = t; } } _removeEditor(t) { if (this.editors.has(t)) { this.editors.remove(t); } if (this._contextOwner === t) { return this.destroy(); } return Promise.resolve(); } _getEditorConfig() { const t = {}; for (const e of this.config.names()) { if (!["plugins", "removePlugins", "extraPlugins"].includes(e)) { t[e] = this.config.get(e); } } return t; } static create(t) { return new Promise((e) => { const n = new this(t); e(n.initPlugins().then(() => n)); }); } } class gu extends mt() { constructor(t) { super(); this.context = t; } destroy() { this.stopListening(); } static get isContextPlugin() { return true; } } var fu = n(1920); var pu = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; pu.insert = "head"; pu.singleton = true; var ku = Zd()(fu.A, pu); const bu = fu.A.locals || {}; const wu = new WeakMap(); let Au = false; function _u({ view: t, element: e, text: n, isDirectHost: i = true, keepOnFocus: o = false, }) { const r = t.document; if (!wu.has(r)) { wu.set(r, new Map()); r.registerPostFixer((t) => Eu(r, t)); r.on( "change:isComposing", () => { t.change((t) => Eu(r, t)); }, { priority: "high" } ); } if (e.is("editableElement")) { e.on("change:placeholder", (t, e, n) => { s(n); }); } if (e.placeholder) { s(e.placeholder); } else if (n) { s(n); } if (n) { Tu(); } function s(n) { wu.get(r).set(e, { text: n, isDirectHost: i, keepOnFocus: o, hostElement: i ? e : null, }); t.change((t) => Eu(r, t)); } } function Cu(t, e) { const n = e.document; if (!wu.has(n)) { return; } t.change((t) => { const i = wu.get(n); const o = i.get(e); t.removeAttribute("data-placeholder", o.hostElement); yu(t, o.hostElement); i.delete(e); }); } function vu(t, e) { if (!e.hasClass("ck-placeholder")) { t.addClass("ck-placeholder", e); return true; } return false; } function yu(t, e) { if (e.hasClass("ck-placeholder")) { t.removeClass("ck-placeholder", e); return true; } return false; } function xu(t, e) { if (!t.isAttached()) { return false; } const n = Array.from(t.getChildren()).some((t) => !t.is("uiElement")); if (n) { return false; } const i = t.document; const o = i.selection; const r = o.anchor; if (i.isComposing && r && r.parent === t) { return false; } if (e) { return true; } if (!i.isFocused) { return true; } return !!r && r.parent !== t; } function Eu(t, e) { const n = wu.get(t); const i = []; let o = false; for (const [t, r] of n) { if (r.isDirectHost) { i.push(t); if (Du(e, t, r)) { o = true; } } } for (const [t, r] of n) { if (r.isDirectHost) { continue; } const n = Su(t); if (!n) { continue; } if (i.includes(n)) { continue; } r.hostElement = n; if (Du(e, t, r)) { o = true; } } return o; } function Du(t, e, n) { const { text: i, isDirectHost: o, hostElement: r } = n; let s = false; if (r.getAttribute("data-placeholder") !== i) { t.setAttribute("data-placeholder", i, r); s = true; } const a = o || e.childCount == 1; if (a && xu(r, n.keepOnFocus)) { if (vu(t, r)) { s = true; } } else if (yu(t, r)) { s = true; } return s; } function Su(t) { if (t.childCount) { const e = t.getChild(0); if ( e.is("element") && !e.is("uiElement") && !e.is("attributeElement") ) { return e; } } return null; } function Tu() { if (!Au) { z("enableplaceholder-deprecated-text-option"); } Au = true; } class Bu { is() { throw new Error("is() method is abstract"); } } var Mu = 4; function Iu(t) { return Va(t, Mu); } const Lu = Iu; class Nu extends G(Bu) { constructor(t) { super(); this.document = t; this.parent = null; } get index() { let t; if (!this.parent) { return null; } if ((t = this.parent.getChildIndex(this)) == -1) { throw new N("view-node-not-found-in-parent", this); } return t; } get nextSibling() { const t = this.index; return (t !== null && this.parent.getChild(t + 1)) || null; } get previousSibling() { const t = this.index; return (t !== null && this.parent.getChild(t - 1)) || null; } get root() { let t = this; while (t.parent) { t = t.parent; } return t; } isAttached() { return this.root.is("rootElement"); } getPath() { const t = []; let e = this; while (e.parent) { t.unshift(e.index); e = e.parent; } return t; } getAncestors(t = {}) { const e = []; let n = t.includeSelf ? this : this.parent; while (n) { e[t.parentFirst ? "push" : "unshift"](n); n = n.parent; } return e; } getCommonAncestor(t, e = {}) { const n = this.getAncestors(e); const i = t.getAncestors(e); let o = 0; while (n[o] == i[o] && n[o]) { o++; } return o === 0 ? null : n[o - 1]; } isBefore(t) { if (this == t) { return false; } if (this.root !== t.root) { return false; } const e = this.getPath(); const n = t.getPath(); const i = Et(e, n); switch (i) { case "prefix": return true; case "extension": return false; default: return e[i] < n[i]; } } isAfter(t) { if (this == t) { return false; } if (this.root !== t.root) { return false; } return !this.isBefore(t); } _remove() { this.parent._removeChildren(this.index); } _fireChange(t, e) { this.fire(`change:${t}`, e); if (this.parent) { this.parent._fireChange(t, e); } } toJSON() { const t = Lu(this); delete t.parent; return t; } } Nu.prototype.is = function (t) { return t === "node" || t === "view:node"; }; class zu extends Nu { constructor(t, e) { super(t); this._textData = e; } get data() { return this._textData; } get _data() { return this.data; } set _data(t) { this._fireChange("text", this); this._textData = t; } isSimilar(t) { if (!(t instanceof zu)) { return false; } return this === t || this.data === t.data; } _clone() { return new zu(this.document, this.data); } } zu.prototype.is = function (t) { return ( t === "$text" || t === "view:$text" || t === "text" || t === "view:text" || t === "node" || t === "view:node" ); }; class Pu extends Bu { constructor(t, e, n) { super(); this.textNode = t; if (e < 0 || e > t.data.length) { throw new N("view-textproxy-wrong-offsetintext", this); } if (n < 0 || e + n > t.data.length) { throw new N("view-textproxy-wrong-length", this); } this.data = t.data.substring(e, e + n); this.offsetInText = e; } get offsetSize() { return this.data.length; } get isPartial() { return this.data.length !== this.textNode.data.length; } get parent() { return this.textNode.parent; } get root() { return this.textNode.root; } get document() { return this.textNode.document; } getAncestors(t = {}) { const e = []; let n = t.includeSelf ? this.textNode : this.parent; while (n !== null) { e[t.parentFirst ? "push" : "unshift"](n); n = n.parent; } return e; } } Pu.prototype.is = function (t) { return ( t === "$textProxy" || t === "view:$textProxy" || t === "textProxy" || t === "view:textProxy" ); }; class Ru { constructor(...t) { this._patterns = []; this.add(...t); } add(...t) { for (let e of t) { if (typeof e == "string" || e instanceof RegExp) { e = { name: e }; } this._patterns.push(e); } } match(...t) { for (const e of t) { for (const t of this._patterns) { const n = Vu(e, t); if (n) { return { element: e, pattern: t, match: n }; } } } return null; } matchAll(...t) { const e = []; for (const n of t) { for (const t of this._patterns) { const i = Vu(n, t); if (i) { e.push({ element: n, pattern: t, match: i }); } } } return e.length > 0 ? e : null; } getElementName() { if (this._patterns.length !== 1) { return null; } const t = this._patterns[0]; const e = t.name; return typeof t != "function" && e && !(e instanceof RegExp) ? e : null; } } function Vu(t, e) { if (typeof e == "function") { return e(t); } const n = {}; if (e.name) { n.name = Ou(e.name, t.name); if (!n.name) { return null; } } if (e.attributes) { n.attributes = $u(e.attributes, t); if (!n.attributes) { return null; } } if (e.classes) { n.classes = qu(e.classes, t); if (!n.classes) { return null; } } if (e.styles) { n.styles = Wu(e.styles, t); if (!n.styles) { return null; } } return n; } function Ou(t, e) { if (t instanceof RegExp) { return !!e.match(t); } return t === e; } function Fu(t, e, n) { const i = ju(t); const o = Array.from(e); const r = []; i.forEach(([t, e]) => { o.forEach((i) => { if (Hu(t, i) && Uu(e, i, n)) { r.push(i); } }); }); if (!i.length || r.length < i.length) { return undefined; } return r; } function ju(t) { if (Array.isArray(t)) { return t.map((t) => { if (fe(t)) { if (t.key === undefined || t.value === undefined) { z("matcher-pattern-missing-key-or-value", t); } return [t.key, t.value]; } return [t, true]; }); } if (fe(t)) { return Object.entries(t); } return [[t, true]]; } function Hu(t, e) { return t === true || t === e || (t instanceof RegExp && e.match(t)); } function Uu(t, e, n) { if (t === true) { return true; } const i = n(e); return t === i || (t instanceof RegExp && !!String(i).match(t)); } function $u(t, e) { const n = new Set(e.getAttributeKeys()); if (fe(t)) { if (t.style !== undefined) { z("matcher-pattern-deprecated-attributes-style-key", t); } if (t.class !== undefined) { z("matcher-pattern-deprecated-attributes-class-key", t); } } else { n.delete("style"); n.delete("class"); } return Fu(t, n, (t) => e.getAttribute(t)); } function qu(t, e) { return Fu(t, e.getClassNames(), () => {}); } function Wu(t, e) { return Fu(t, e.getStyleNames(true), (t) => e.getStyle(t)); } var Gu = "[object Symbol]"; function Ku(t) { return typeof t == "symbol" || (Xt(t) && Yt(t) == Gu); } const Yu = Ku; var Qu = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Zu = /^\w*$/; function Ju(t, e) { if (Zt(t)) { return false; } var n = typeof t; if ( n == "number" || n == "symbol" || n == "boolean" || t == null || Yu(t) ) { return true; } return Zu.test(t) || !Qu.test(t) || (e != null && t in Object(e)); } const Xu = Ju; var th = "Expected a function"; function eh(t, e) { if (typeof t != "function" || (e != null && typeof e != "function")) { throw new TypeError(th); } var n = function () { var i = arguments, o = e ? e.apply(this, i) : i[0], r = n.cache; if (r.has(o)) { return r.get(o); } var s = t.apply(this, i); n.cache = r.set(o, s) || r; return s; }; n.cache = new (eh.Cache || ti)(); return n; } eh.Cache = ti; const nh = eh; var ih = 500; function oh(t) { var e = nh(t, function (t) { if (n.size === ih) { n.clear(); } return t; }); var n = e.cache; return e; } const rh = oh; var sh = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var ah = /\\(\\)?/g; var ch = rh(function (t) { var e = []; if (t.charCodeAt(0) === 46) { e.push(""); } t.replace(sh, function (t, n, i, o) { e.push(i ? o.replace(ah, "$1") : n || t); }); return e; }); const lh = ch; function dh(t, e) { var n = -1, i = t == null ? 0 : t.length, o = Array(i); while (++n < i) { o[n] = e(t[n], n, t); } return o; } const uh = dh; var hh = 1 / 0; var mh = Nt ? Nt.prototype : undefined, gh = mh ? mh.toString : undefined; function fh(t) { if (typeof t == "string") { return t; } if (Zt(t)) { return uh(t, fh) + ""; } if (Yu(t)) { return gh ? gh.call(t) : ""; } var e = t + ""; return e == "0" && 1 / t == -hh ? "-0" : e; } const ph = fh; function kh(t) { return t == null ? "" : ph(t); } const bh = kh; function wh(t, e) { if (Zt(t)) { return t; } return Xu(t, e) ? [t] : lh(bh(t)); } const Ah = wh; function _h(t) { var e = t == null ? 0 : t.length; return e ? t[e - 1] : undefined; } const Ch = _h; var vh = 1 / 0; function yh(t) { if (typeof t == "string" || Yu(t)) { return t; } var e = t + ""; return e == "0" && 1 / t == -vh ? "-0" : e; } const xh = yh; function Eh(t, e) { e = Ah(e, t); var n = 0, i = e.length; while (t != null && n < i) { t = t[xh(e[n++])]; } return n && n == i ? t : undefined; } const Dh = Eh; function Sh(t, e, n) { var i = -1, o = t.length; if (e < 0) { e = -e > o ? 0 : o + e; } n = n > o ? o : n; if (n < 0) { n += o; } o = e > n ? 0 : (n - e) >>> 0; e >>>= 0; var r = Array(o); while (++i < o) { r[i] = t[i + e]; } return r; } const Th = Sh; function Bh(t, e) { return e.length < 2 ? t : Dh(t, Th(e, 0, -1)); } const Mh = Bh; function Ih(t, e) { e = Ah(e, t); t = Mh(t, e); return t == null || delete t[xh(Ch(e))]; } const Lh = Ih; function Nh(t, e) { return t == null ? true : Lh(t, e); } const zh = Nh; function Ph(t, e, n) { var i = t == null ? undefined : Dh(t, e); return i === undefined ? n : i; } const Rh = Ph; function Vh(t, e, n, i) { if (!st(t)) { return t; } e = Ah(e, t); var o = -1, r = e.length, s = r - 1, a = t; while (a != null && ++o < r) { var c = xh(e[o]), l = n; if (c === "__proto__" || c === "constructor" || c === "prototype") { return t; } if (o != s) { var d = a[c]; l = i ? i(d, c, a) : undefined; if (l === undefined) { l = st(d) ? d : Fi(e[o + 1]) ? [] : {}; } } fi(a, c, l); a = a[c]; } return t; } const Oh = Vh; function Fh(t, e, n) { return t == null ? t : Oh(t, e, n); } const jh = Fh; class Hh { constructor(t) { this._styles = {}; this._styleProcessor = t; } get isEmpty() { const t = Object.entries(this._styles); return !t.length; } get size() { if (this.isEmpty) { return 0; } return this.getStyleNames().length; } setTo(t) { this.clear(); const e = $h(t); for (const [t, n] of e) { this._styleProcessor.toNormalizedForm(t, n, this._styles); } } has(t) { if (this.isEmpty) { return false; } const e = this._styleProcessor.getReducedForm(t, this._styles); const n = e.find(([e]) => e === t); return Array.isArray(n); } set(t, e) { if (st(t)) { for (const [e, n] of Object.entries(t)) { this._styleProcessor.toNormalizedForm(e, n, this._styles); } } else { this._styleProcessor.toNormalizedForm(t, e, this._styles); } } remove(t) { const e = qh(t); zh(this._styles, e); delete this._styles[t]; this._cleanEmptyObjectsOnPath(e); } getNormalized(t) { return this._styleProcessor.getNormalized(t, this._styles); } toString() { if (this.isEmpty) { return ""; } return ( this.getStylesEntries() .map((t) => t.join(":")) .sort() .join(";") + ";" ); } getAsString(t) { if (this.isEmpty) { return; } if (this._styles[t] && !st(this._styles[t])) { return this._styles[t]; } const e = this._styleProcessor.getReducedForm(t, this._styles); const n = e.find(([e]) => e === t); if (Array.isArray(n)) { return n[1]; } } getStyleNames(t = false) { if (this.isEmpty) { return []; } if (t) { return this._styleProcessor.getStyleNames(this._styles); } const e = this.getStylesEntries(); return e.map(([t]) => t); } clear() { this._styles = {}; } getStylesEntries() { const t = []; const e = Object.keys(this._styles); for (const n of e) { t.push(...this._styleProcessor.getReducedForm(n, this._styles)); } return t; } _cleanEmptyObjectsOnPath(t) { const e = t.split("."); const n = e.length > 1; if (!n) { return; } const i = e.splice(0, e.length - 1).join("."); const o = Rh(this._styles, i); if (!o) { return; } const r = !Object.keys(o).length; if (r) { this.remove(i); } } } class Uh { constructor() { this._normalizers = new Map(); this._extractors = new Map(); this._reducers = new Map(); this._consumables = new Map(); } toNormalizedForm(t, e, n) { if (st(e)) { Wh(n, qh(t), e); return; } if (this._normalizers.has(t)) { const i = this._normalizers.get(t); const { path: o, value: r } = i(e); Wh(n, o, r); } else { Wh(n, t, e); } } getNormalized(t, e) { if (!t) { return Gl({}, e); } if (e[t] !== undefined) { return e[t]; } if (this._extractors.has(t)) { const n = this._extractors.get(t); if (typeof n === "string") { return Rh(e, n); } const i = n(t, e); if (i) { return i; } } return Rh(e, qh(t)); } getReducedForm(t, e) { const n = this.getNormalized(t, e); if (n === undefined) { return []; } if (this._reducers.has(t)) { const e = this._reducers.get(t); return e(n); } return [[t, n]]; } getStyleNames(t) { const e = Array.from(this._consumables.keys()).filter((e) => { const n = this.getNormalized(e, t); if (n && typeof n == "object") { return Object.keys(n).length; } return n; }); const n = new Set([...e, ...Object.keys(t)]); return Array.from(n); } getRelatedStyles(t) { return this._consumables.get(t) || []; } setNormalizer(t, e) { this._normalizers.set(t, e); } setExtractor(t, e) { this._extractors.set(t, e); } setReducer(t, e) { this._reducers.set(t, e); } setStyleRelation(t, e) { this._mapStyleNames(t, e); for (const n of e) { this._mapStyleNames(n, [t]); } } _mapStyleNames(t, e) { if (!this._consumables.has(t)) { this._consumables.set(t, []); } this._consumables.get(t).push(...e); } } function $h(t) { let e = null; let n = 0; let i = 0; let o = null; const r = new Map(); if (t === "") { return r; } if (t.charAt(t.length - 1) != ";") { t = t + ";"; } for (let s = 0; s < t.length; s++) { const a = t.charAt(s); if (e === null) { switch (a) { case ":": if (!o) { o = t.substr(n, s - n); i = s + 1; } break; case '"': case "'": e = a; break; case ";": { const e = t.substr(i, s - i); if (o) { r.set(o.trim(), e.trim()); } o = null; n = s + 1; break; } } } else if (a === e) { e = null; } } return r; } function qh(t) { return t.replace("-", "."); } function Wh(t, e, n) { let i = n; if (st(n)) { i = Gl({}, Rh(t, e), n); } jh(t, e, i); } class Gh extends Nu { constructor(t, e, n, i) { super(t); this._unsafeAttributesToRender = []; this._customProperties = new Map(); this.name = e; this._attrs = Kh(n); this._children = []; if (i) { this._insertChild(0, i); } this._classes = new Set(); if (this._attrs.has("class")) { const t = this._attrs.get("class"); Yh(this._classes, t); this._attrs.delete("class"); } this._styles = new Hh(this.document.stylesProcessor); if (this._attrs.has("style")) { this._styles.setTo(this._attrs.get("style")); this._attrs.delete("style"); } } get childCount() { return this._children.length; } get isEmpty() { return this._children.length === 0; } getChild(t) { return this._children[t]; } getChildIndex(t) { return this._children.indexOf(t); } getChildren() { return this._children[Symbol.iterator](); } *getAttributeKeys() { if (this._classes.size > 0) { yield "class"; } if (!this._styles.isEmpty) { yield "style"; } yield* this._attrs.keys(); } *getAttributes() { yield* this._attrs.entries(); if (this._classes.size > 0) { yield ["class", this.getAttribute("class")]; } if (!this._styles.isEmpty) { yield ["style", this.getAttribute("style")]; } } getAttribute(t) { if (t == "class") { if (this._classes.size > 0) { return [...this._classes].join(" "); } return undefined; } if (t == "style") { const t = this._styles.toString(); return t == "" ? undefined : t; } return this._attrs.get(t); } hasAttribute(t) { if (t == "class") { return this._classes.size > 0; } if (t == "style") { return !this._styles.isEmpty; } return this._attrs.has(t); } isSimilar(t) { if (!(t instanceof Gh)) { return false; } if (this === t) { return true; } if (this.name != t.name) { return false; } if ( this._attrs.size !== t._attrs.size || this._classes.size !== t._classes.size || this._styles.size !== t._styles.size ) { return false; } for (const [e, n] of this._attrs) { if (!t._attrs.has(e) || t._attrs.get(e) !== n) { return false; } } for (const e of this._classes) { if (!t._classes.has(e)) { return false; } } for (const e of this._styles.getStyleNames()) { if ( !t._styles.has(e) || t._styles.getAsString(e) !== this._styles.getAsString(e) ) { return false; } } return true; } hasClass(...t) { for (const e of t) { if (!this._classes.has(e)) { return false; } } return true; } getClassNames() { return this._classes.keys(); } getStyle(t) { return this._styles.getAsString(t); } getNormalizedStyle(t) { return this._styles.getNormalized(t); } getStyleNames(t) { return this._styles.getStyleNames(t); } hasStyle(...t) { for (const e of t) { if (!this._styles.has(e)) { return false; } } return true; } findAncestor(...t) { const e = new Ru(...t); let n = this.parent; while (n && !n.is("documentFragment")) { if (e.match(n)) { return n; } n = n.parent; } return null; } getCustomProperty(t) { return this._customProperties.get(t); } *getCustomProperties() { yield* this._customProperties.entries(); } getIdentity() { const t = Array.from(this._classes).sort().join(","); const e = this._styles.toString(); const n = Array.from(this._attrs) .map((t) => `${t[0]}="${t[1]}"`) .sort() .join(" "); return ( this.name + (t == "" ? "" : ` class="${t}"`) + (!e ? "" : ` style="${e}"`) + (n == "" ? "" : ` ${n}`) ); } shouldRenderUnsafeAttribute(t) { return this._unsafeAttributesToRender.includes(t); } _clone(t = false) { const e = []; if (t) { for (const n of this.getChildren()) { e.push(n._clone(t)); } } const n = new this.constructor( this.document, this.name, this._attrs, e ); n._classes = new Set(this._classes); n._styles.set(this._styles.getNormalized()); n._customProperties = new Map(this._customProperties); n.getFillerOffset = this.getFillerOffset; n._unsafeAttributesToRender = this._unsafeAttributesToRender; return n; } _appendChild(t) { return this._insertChild(this.childCount, t); } _insertChild(t, e) { this._fireChange("children", this); let n = 0; const i = Qh(this.document, e); for (const e of i) { if (e.parent !== null) { e._remove(); } e.parent = this; e.document = this.document; this._children.splice(t, 0, e); t++; n++; } return n; } _removeChildren(t, e = 1) { this._fireChange("children", this); for (let n = t; n < t + e; n++) { this._children[n].parent = null; } return this._children.splice(t, e); } _setAttribute(t, e) { const n = String(e); this._fireChange("attributes", this); if (t == "class") { Yh(this._classes, n); } else if (t == "style") { this._styles.setTo(n); } else { this._attrs.set(t, n); } } _removeAttribute(t) { this._fireChange("attributes", this); if (t == "class") { if (this._classes.size > 0) { this._classes.clear(); return true; } return false; } if (t == "style") { if (!this._styles.isEmpty) { this._styles.clear(); return true; } return false; } return this._attrs.delete(t); } _addClass(t) { this._fireChange("attributes", this); for (const e of rl(t)) { this._classes.add(e); } } _removeClass(t) { this._fireChange("attributes", this); for (const e of rl(t)) { this._classes.delete(e); } } _setStyle(t, e) { this._fireChange("attributes", this); if (typeof t != "string") { this._styles.set(t); } else { this._styles.set(t, e); } } _removeStyle(t) { this._fireChange("attributes", this); for (const e of rl(t)) { this._styles.remove(e); } } _setCustomProperty(t, e) { this._customProperties.set(t, e); } _removeCustomProperty(t) { return this._customProperties.delete(t); } } Gh.prototype.is = function (t, e) { if (!e) { return ( t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return e === this.name && (t === "element" || t === "view:element"); } }; function Kh(t) { const e = ad(t); for (const [t, n] of e) { if (n === null) { e.delete(t); } else if (typeof n != "string") { e.set(t, String(n)); } } return e; } function Yh(t, e) { const n = e.split(/\s+/); t.clear(); n.forEach((e) => t.add(e)); } function Qh(t, e) { if (typeof e == "string") { return [new zu(t, e)]; } if (!Dt(e)) { e = [e]; } return Array.from(e).map((e) => { if (typeof e == "string") { return new zu(t, e); } if (e instanceof Pu) { return new zu(t, e.data); } return e; }); } class Zh extends Gh { constructor(t, e, n, i) { super(t, e, n, i); this.getFillerOffset = Jh; } } Zh.prototype.is = function (t, e) { if (!e) { return ( t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element") ); } }; function Jh() { const t = [...this.getChildren()]; const e = t[this.childCount - 1]; if (e && e.is("element", "br")) { return this.childCount; } for (const e of t) { if (!e.is("uiElement")) { return null; } } return this.childCount; } class Xh extends mt(Zh) { constructor(t, e, n, i) { super(t, e, n, i); this.set("isReadOnly", false); this.set("isFocused", false); this.set("placeholder", undefined); this.bind("isReadOnly").to(t); this.bind("isFocused").to( t, "isFocused", (e) => e && t.selection.editableElement == this ); this.listenTo(t.selection, "change", () => { this.isFocused = t.isFocused && t.selection.editableElement == this; }); } destroy() { this.stopListening(); } } Xh.prototype.is = function (t, e) { if (!e) { return ( t === "editableElement" || t === "view:editableElement" || t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "editableElement" || t === "view:editableElement" || t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element") ); } }; const tm = Symbol("rootName"); class em extends Xh { constructor(t, e) { super(t, e); this.rootName = "main"; } get rootName() { return this.getCustomProperty(tm); } set rootName(t) { this._setCustomProperty(tm, t); } set _name(t) { this.name = t; } } em.prototype.is = function (t, e) { if (!e) { return ( t === "rootElement" || t === "view:rootElement" || t === "editableElement" || t === "view:editableElement" || t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "rootElement" || t === "view:rootElement" || t === "editableElement" || t === "view:editableElement" || t === "containerElement" || t === "view:containerElement" || t === "element" || t === "view:element") ); } }; class nm { constructor(t = {}) { if (!t.boundaries && !t.startPosition) { throw new N("view-tree-walker-no-start-position", null); } if ( t.direction && t.direction != "forward" && t.direction != "backward" ) { throw new N("view-tree-walker-unknown-direction", t.startPosition, { direction: t.direction, }); } this.boundaries = t.boundaries || null; if (t.startPosition) { this._position = im._createAt(t.startPosition); } else { this._position = im._createAt( t.boundaries[t.direction == "backward" ? "end" : "start"] ); } this.direction = t.direction || "forward"; this.singleCharacters = !!t.singleCharacters; this.shallow = !!t.shallow; this.ignoreElementEnd = !!t.ignoreElementEnd; this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null; this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null; } [Symbol.iterator]() { return this; } get position() { return this._position; } skip(t) { let e; let n; do { n = this.position; e = this.next(); } while (!e.done && t(e.value)); if (!e.done) { this._position = n; } } next() { if (this.direction == "forward") { return this._next(); } else { return this._previous(); } } _next() { let t = this.position.clone(); const e = this.position; const n = t.parent; if (n.parent === null && t.offset === n.childCount) { return { done: true, value: undefined }; } if ( n === this._boundaryEndParent && t.offset == this.boundaries.end.offset ) { return { done: true, value: undefined }; } let i; if (n instanceof zu) { if (t.isAtEnd) { this._position = im._createAfter(n); return this._next(); } i = n.data[t.offset]; } else { i = n.getChild(t.offset); } if (i instanceof Gh) { if (!this.shallow) { t = new im(i, 0); } else { if (this.boundaries && this.boundaries.end.isBefore(t)) { return { done: true, value: undefined }; } t.offset++; } this._position = t; return this._formatReturnValue("elementStart", i, e, t, 1); } if (i instanceof zu) { if (this.singleCharacters) { t = new im(i, 0); this._position = t; return this._next(); } let n = i.data.length; let o; if (i == this._boundaryEndParent) { n = this.boundaries.end.offset; o = new Pu(i, 0, n); t = im._createAfter(o); } else { o = new Pu(i, 0, i.data.length); t.offset++; } this._position = t; return this._formatReturnValue("text", o, e, t, n); } if (typeof i == "string") { let i; if (this.singleCharacters) { i = 1; } else { const e = n === this._boundaryEndParent ? this.boundaries.end.offset : n.data.length; i = e - t.offset; } const o = new Pu(n, t.offset, i); t.offset += i; this._position = t; return this._formatReturnValue("text", o, e, t, i); } t = im._createAfter(n); this._position = t; if (this.ignoreElementEnd) { return this._next(); } return this._formatReturnValue("elementEnd", n, e, t); } _previous() { let t = this.position.clone(); const e = this.position; const n = t.parent; if (n.parent === null && t.offset === 0) { return { done: true, value: undefined }; } if ( n == this._boundaryStartParent && t.offset == this.boundaries.start.offset ) { return { done: true, value: undefined }; } let i; if (n instanceof zu) { if (t.isAtStart) { this._position = im._createBefore(n); return this._previous(); } i = n.data[t.offset - 1]; } else { i = n.getChild(t.offset - 1); } if (i instanceof Gh) { if (this.shallow) { t.offset--; this._position = t; return this._formatReturnValue("elementStart", i, e, t, 1); } t = new im(i, i.childCount); this._position = t; if (this.ignoreElementEnd) { return this._previous(); } return this._formatReturnValue("elementEnd", i, e, t); } if (i instanceof zu) { if (this.singleCharacters) { t = new im(i, i.data.length); this._position = t; return this._previous(); } let n = i.data.length; let o; if (i == this._boundaryStartParent) { const e = this.boundaries.start.offset; o = new Pu(i, e, i.data.length - e); n = o.data.length; t = im._createBefore(o); } else { o = new Pu(i, 0, i.data.length); t.offset--; } this._position = t; return this._formatReturnValue("text", o, e, t, n); } if (typeof i == "string") { let i; if (!this.singleCharacters) { const e = n === this._boundaryStartParent ? this.boundaries.start.offset : 0; i = t.offset - e; } else { i = 1; } t.offset -= i; const o = new Pu(n, t.offset, i); this._position = t; return this._formatReturnValue("text", o, e, t, i); } t = im._createBefore(n); this._position = t; return this._formatReturnValue("elementStart", n, e, t, 1); } _formatReturnValue(t, e, n, i, o) { if (e instanceof Pu) { if (e.offsetInText + e.data.length == e.textNode.data.length) { if ( this.direction == "forward" && !(this.boundaries && this.boundaries.end.isEqual(this.position)) ) { i = im._createAfter(e.textNode); this._position = i; } else { n = im._createAfter(e.textNode); } } if (e.offsetInText === 0) { if ( this.direction == "backward" && !( this.boundaries && this.boundaries.start.isEqual(this.position) ) ) { i = im._createBefore(e.textNode); this._position = i; } else { n = im._createBefore(e.textNode); } } } return { done: false, value: { type: t, item: e, previousPosition: n, nextPosition: i, length: o, }, }; } } class im extends Bu { constructor(t, e) { super(); this.parent = t; this.offset = e; } get nodeAfter() { if (this.parent.is("$text")) { return null; } return this.parent.getChild(this.offset) || null; } get nodeBefore() { if (this.parent.is("$text")) { return null; } return this.parent.getChild(this.offset - 1) || null; } get isAtStart() { return this.offset === 0; } get isAtEnd() { const t = this.parent.is("$text") ? this.parent.data.length : this.parent.childCount; return this.offset === t; } get root() { return this.parent.root; } get editableElement() { let t = this.parent; while (!(t instanceof Xh)) { if (t.parent) { t = t.parent; } else { return null; } } return t; } getShiftedBy(t) { const e = im._createAt(this); const n = e.offset + t; e.offset = n < 0 ? 0 : n; return e; } getLastMatchingPosition(t, e = {}) { e.startPosition = this; const n = new nm(e); n.skip(t); return n.position; } getAncestors() { if (this.parent.is("documentFragment")) { return [this.parent]; } else { return this.parent.getAncestors({ includeSelf: true }); } } getCommonAncestor(t) { const e = this.getAncestors(); const n = t.getAncestors(); let i = 0; while (e[i] == n[i] && e[i]) { i++; } return i === 0 ? null : e[i - 1]; } isEqual(t) { return this.parent == t.parent && this.offset == t.offset; } isBefore(t) { return this.compareWith(t) == "before"; } isAfter(t) { return this.compareWith(t) == "after"; } compareWith(t) { if (this.root !== t.root) { return "different"; } if (this.isEqual(t)) { return "same"; } const e = this.parent.is("node") ? this.parent.getPath() : []; const n = t.parent.is("node") ? t.parent.getPath() : []; e.push(this.offset); n.push(t.offset); const i = Et(e, n); switch (i) { case "prefix": return "before"; case "extension": return "after"; default: return e[i] < n[i] ? "before" : "after"; } } getWalker(t = {}) { t.startPosition = this; return new nm(t); } clone() { return new im(this.parent, this.offset); } static _createAt(t, e) { if (t instanceof im) { return new this(t.parent, t.offset); } else { const n = t; if (e == "end") { e = n.is("$text") ? n.data.length : n.childCount; } else if (e == "before") { return this._createBefore(n); } else if (e == "after") { return this._createAfter(n); } else if (e !== 0 && !e) { throw new N("view-createpositionat-offset-required", n); } return new im(n, e); } } static _createAfter(t) { if (t.is("$textProxy")) { return new im(t.textNode, t.offsetInText + t.data.length); } if (!t.parent) { throw new N("view-position-after-root", t, { root: t }); } return new im(t.parent, t.index + 1); } static _createBefore(t) { if (t.is("$textProxy")) { return new im(t.textNode, t.offsetInText); } if (!t.parent) { throw new N("view-position-before-root", t, { root: t }); } return new im(t.parent, t.index); } } im.prototype.is = function (t) { return t === "position" || t === "view:position"; }; class om extends Bu { constructor(t, e = null) { super(); this.start = t.clone(); this.end = e ? e.clone() : t.clone(); } *[Symbol.iterator]() { yield* new nm({ boundaries: this, ignoreElementEnd: true }); } get isCollapsed() { return this.start.isEqual(this.end); } get isFlat() { return this.start.parent === this.end.parent; } get root() { return this.start.root; } getEnlarged() { let t = this.start.getLastMatchingPosition(rm, { direction: "backward", }); let e = this.end.getLastMatchingPosition(rm); if (t.parent.is("$text") && t.isAtStart) { t = im._createBefore(t.parent); } if (e.parent.is("$text") && e.isAtEnd) { e = im._createAfter(e.parent); } return new om(t, e); } getTrimmed() { let t = this.start.getLastMatchingPosition(rm); if (t.isAfter(this.end) || t.isEqual(this.end)) { return new om(t, t); } let e = this.end.getLastMatchingPosition(rm, { direction: "backward", }); const n = t.nodeAfter; const i = e.nodeBefore; if (n && n.is("$text")) { t = new im(n, 0); } if (i && i.is("$text")) { e = new im(i, i.data.length); } return new om(t, e); } isEqual(t) { return ( this == t || (this.start.isEqual(t.start) && this.end.isEqual(t.end)) ); } containsPosition(t) { return t.isAfter(this.start) && t.isBefore(this.end); } containsRange(t, e = false) { if (t.isCollapsed) { e = false; } const n = this.containsPosition(t.start) || (e && this.start.isEqual(t.start)); const i = this.containsPosition(t.end) || (e && this.end.isEqual(t.end)); return n && i; } getDifference(t) { const e = []; if (this.isIntersecting(t)) { if (this.containsPosition(t.start)) { e.push(new om(this.start, t.start)); } if (this.containsPosition(t.end)) { e.push(new om(t.end, this.end)); } } else { e.push(this.clone()); } return e; } getIntersection(t) { if (this.isIntersecting(t)) { let e = this.start; let n = this.end; if (this.containsPosition(t.start)) { e = t.start; } if (this.containsPosition(t.end)) { n = t.end; } return new om(e, n); } return null; } getWalker(t = {}) { t.boundaries = this; return new nm(t); } getCommonAncestor() { return this.start.getCommonAncestor(this.end); } getContainedElement() { if (this.isCollapsed) { return null; } let t = this.start.nodeAfter; let e = this.end.nodeBefore; if ( this.start.parent.is("$text") && this.start.isAtEnd && this.start.parent.nextSibling ) { t = this.start.parent.nextSibling; } if ( this.end.parent.is("$text") && this.end.isAtStart && this.end.parent.previousSibling ) { e = this.end.parent.previousSibling; } if (t && t.is("element") && t === e) { return t; } return null; } clone() { return new om(this.start, this.end); } *getItems(t = {}) { t.boundaries = this; t.ignoreElementEnd = true; const e = new nm(t); for (const t of e) { yield t.item; } } *getPositions(t = {}) { t.boundaries = this; const e = new nm(t); yield e.position; for (const t of e) { yield t.nextPosition; } } isIntersecting(t) { return this.start.isBefore(t.end) && this.end.isAfter(t.start); } static _createFromParentsAndOffsets(t, e, n, i) { return new this(new im(t, e), new im(n, i)); } static _createFromPositionAndShift(t, e) { const n = t; const i = t.getShiftedBy(e); return e > 0 ? new this(n, i) : new this(i, n); } static _createIn(t) { return this._createFromParentsAndOffsets(t, 0, t, t.childCount); } static _createOn(t) { const e = t.is("$textProxy") ? t.offsetSize : 1; return this._createFromPositionAndShift(im._createBefore(t), e); } } om.prototype.is = function (t) { return t === "range" || t === "view:range"; }; function rm(t) { if (t.item.is("attributeElement") || t.item.is("uiElement")) { return true; } return false; } class sm extends G(Bu) { constructor(...t) { super(); this._ranges = []; this._lastRangeBackward = false; this._isFake = false; this._fakeSelectionLabel = ""; if (t.length) { this.setTo(...t); } } get isFake() { return this._isFake; } get fakeSelectionLabel() { return this._fakeSelectionLabel; } get anchor() { if (!this._ranges.length) { return null; } const t = this._ranges[this._ranges.length - 1]; const e = this._lastRangeBackward ? t.end : t.start; return e.clone(); } get focus() { if (!this._ranges.length) { return null; } const t = this._ranges[this._ranges.length - 1]; const e = this._lastRangeBackward ? t.start : t.end; return e.clone(); } get isCollapsed() { return this.rangeCount === 1 && this._ranges[0].isCollapsed; } get rangeCount() { return this._ranges.length; } get isBackward() { return !this.isCollapsed && this._lastRangeBackward; } get editableElement() { if (this.anchor) { return this.anchor.editableElement; } return null; } *getRanges() { for (const t of this._ranges) { yield t.clone(); } } getFirstRange() { let t = null; for (const e of this._ranges) { if (!t || e.start.isBefore(t.start)) { t = e; } } return t ? t.clone() : null; } getLastRange() { let t = null; for (const e of this._ranges) { if (!t || e.end.isAfter(t.end)) { t = e; } } return t ? t.clone() : null; } getFirstPosition() { const t = this.getFirstRange(); return t ? t.start.clone() : null; } getLastPosition() { const t = this.getLastRange(); return t ? t.end.clone() : null; } isEqual(t) { if (this.isFake != t.isFake) { return false; } if (this.isFake && this.fakeSelectionLabel != t.fakeSelectionLabel) { return false; } if (this.rangeCount != t.rangeCount) { return false; } else if (this.rangeCount === 0) { return true; } if (!this.anchor.isEqual(t.anchor) || !this.focus.isEqual(t.focus)) { return false; } for (const e of this._ranges) { let n = false; for (const i of t._ranges) { if (e.isEqual(i)) { n = true; break; } } if (!n) { return false; } } return true; } isSimilar(t) { if (this.isBackward != t.isBackward) { return false; } const e = xt(this.getRanges()); const n = xt(t.getRanges()); if (e != n) { return false; } if (e == 0) { return true; } for (let e of this.getRanges()) { e = e.getTrimmed(); let n = false; for (let i of t.getRanges()) { i = i.getTrimmed(); if (e.start.isEqual(i.start) && e.end.isEqual(i.end)) { n = true; break; } } if (!n) { return false; } } return true; } getSelectedElement() { if (this.rangeCount !== 1) { return null; } return this.getFirstRange().getContainedElement(); } setTo(...t) { let [e, n, i] = t; if (typeof n == "object") { i = n; n = undefined; } if (e === null) { this._setRanges([]); this._setFakeOptions(i); } else if (e instanceof sm || e instanceof am) { this._setRanges(e.getRanges(), e.isBackward); this._setFakeOptions({ fake: e.isFake, label: e.fakeSelectionLabel, }); } else if (e instanceof om) { this._setRanges([e], i && i.backward); this._setFakeOptions(i); } else if (e instanceof im) { this._setRanges([new om(e)]); this._setFakeOptions(i); } else if (e instanceof Nu) { const t = !!i && !!i.backward; let o; if (n === undefined) { throw new N( "view-selection-setto-required-second-parameter", this ); } else if (n == "in") { o = om._createIn(e); } else if (n == "on") { o = om._createOn(e); } else { o = new om(im._createAt(e, n)); } this._setRanges([o], t); this._setFakeOptions(i); } else if (Dt(e)) { this._setRanges(e, i && i.backward); this._setFakeOptions(i); } else { throw new N("view-selection-setto-not-selectable", this); } this.fire("change"); } setFocus(t, e) { if (this.anchor === null) { throw new N("view-selection-setfocus-no-ranges", this); } const n = im._createAt(t, e); if (n.compareWith(this.focus) == "same") { return; } const i = this.anchor; this._ranges.pop(); if (n.compareWith(i) == "before") { this._addRange(new om(n, i), true); } else { this._addRange(new om(i, n)); } this.fire("change"); } _setRanges(t, e = false) { t = Array.from(t); this._ranges = []; for (const e of t) { this._addRange(e); } this._lastRangeBackward = !!e; } _setFakeOptions(t = {}) { this._isFake = !!t.fake; this._fakeSelectionLabel = t.fake ? t.label || "" : ""; } _addRange(t, e = false) { if (!(t instanceof om)) { throw new N("view-selection-add-range-not-range", this); } this._pushRange(t); this._lastRangeBackward = !!e; } _pushRange(t) { for (const e of this._ranges) { if (t.isIntersecting(e)) { throw new N("view-selection-range-intersects", this, { addedRange: t, intersectingRange: e, }); } } this._ranges.push(new om(t.start, t.end)); } } sm.prototype.is = function (t) { return t === "selection" || t === "view:selection"; }; class am extends G(Bu) { constructor(...t) { super(); this._selection = new sm(); this._selection.delegate("change").to(this); if (t.length) { this._selection.setTo(...t); } } get isFake() { return this._selection.isFake; } get fakeSelectionLabel() { return this._selection.fakeSelectionLabel; } get anchor() { return this._selection.anchor; } get focus() { return this._selection.focus; } get isCollapsed() { return this._selection.isCollapsed; } get rangeCount() { return this._selection.rangeCount; } get isBackward() { return this._selection.isBackward; } get editableElement() { return this._selection.editableElement; } get _ranges() { return this._selection._ranges; } *getRanges() { yield* this._selection.getRanges(); } getFirstRange() { return this._selection.getFirstRange(); } getLastRange() { return this._selection.getLastRange(); } getFirstPosition() { return this._selection.getFirstPosition(); } getLastPosition() { return this._selection.getLastPosition(); } getSelectedElement() { return this._selection.getSelectedElement(); } isEqual(t) { return this._selection.isEqual(t); } isSimilar(t) { return this._selection.isSimilar(t); } _setTo(...t) { this._selection.setTo(...t); } _setFocus(t, e) { this._selection.setFocus(t, e); } } am.prototype.is = function (t) { return ( t === "selection" || t == "documentSelection" || t == "view:selection" || t == "view:documentSelection" ); }; class cm extends D { constructor(t, e, n) { super(t, e); this.startRange = n; this._eventPhase = "none"; this._currentTarget = null; } get eventPhase() { return this._eventPhase; } get currentTarget() { return this._currentTarget; } } const lm = Symbol("bubbling contexts"); function dm(t) { class e extends t { fire(t, ...e) { try { const n = t instanceof D ? t : new D(this, t); const i = gm(this); if (!i.size) { return; } um(n, "capturing", this); if (hm(i, "$capture", n, ...e)) { return n.return; } const o = n.startRange || this.selection.getFirstRange(); const r = o ? o.getContainedElement() : null; const s = r ? Boolean(mm(i, r)) : false; let a = r || fm(o); um(n, "atTarget", a); if (!s) { if (hm(i, "$text", n, ...e)) { return n.return; } um(n, "bubbling", a); } while (a) { if (a.is("rootElement")) { if (hm(i, "$root", n, ...e)) { return n.return; } } else if (a.is("element")) { if (hm(i, a.name, n, ...e)) { return n.return; } } if (hm(i, a, n, ...e)) { return n.return; } a = a.parent; um(n, "bubbling", a); } um(n, "bubbling", this); hm(i, "$document", n, ...e); return n.return; } catch (t) { N.rethrowUnexpectedError(t, this); } } _addEventListener(t, e, n) { const i = rl(n.context || "$document"); const o = gm(this); for (const r of i) { let i = o.get(r); if (!i) { i = new (G())(); o.set(r, i); } this.listenTo(i, t, e, n); } } _removeEventListener(t, e) { const n = gm(this); for (const i of n.values()) { this.stopListening(i, t, e); } } } return e; } { const t = dm(Object); ["fire", "_addEventListener", "_removeEventListener"].forEach((e) => { dm[e] = t.prototype[e]; }); } function um(t, e, n) { if (t instanceof cm) { t._eventPhase = e; t._currentTarget = n; } } function hm(t, e, n, ...i) { const o = typeof e == "string" ? t.get(e) : mm(t, e); if (!o) { return false; } o.fire(n, ...i); return n.stop.called; } function mm(t, e) { for (const [n, i] of t) { if (typeof n == "function" && n(e)) { return i; } } return null; } function gm(t) { if (!t[lm]) { t[lm] = new Map(); } return t[lm]; } function fm(t) { if (!t) { return null; } const e = t.start.parent; const n = t.end.parent; const i = e.getPath(); const o = n.getPath(); return i.length > o.length ? e : n; } class pm extends dm(mt()) { constructor(t) { super(); this._postFixers = new Set(); this.selection = new am(); this.roots = new nd({ idProperty: "rootName" }); this.stylesProcessor = t; this.set("isReadOnly", false); this.set("isFocused", false); this.set("isSelecting", false); this.set("isComposing", false); } getRoot(t = "main") { return this.roots.get(t); } registerPostFixer(t) { this._postFixers.add(t); } destroy() { this.roots.forEach((t) => t.destroy()); this.stopListening(); } _callPostFixers(t) { let e = false; do { for (const n of this._postFixers) { e = n(t); if (e) { break; } } } while (e); } } const km = 10; class bm extends Gh { constructor(t, e, n, i) { super(t, e, n, i); this._priority = km; this._id = null; this._clonesGroup = null; this.getFillerOffset = Am; } get priority() { return this._priority; } get id() { return this._id; } getElementsWithSameId() { if (this.id === null) { throw new N( "attribute-element-get-elements-with-same-id-no-id", this ); } return new Set(this._clonesGroup); } isSimilar(t) { if (this.id !== null || t.id !== null) { return this.id === t.id; } return super.isSimilar(t) && this.priority == t.priority; } _clone(t = false) { const e = super._clone(t); e._priority = this._priority; e._id = this._id; return e; } } bm.DEFAULT_PRIORITY = km; const wm = bm; bm.prototype.is = function (t, e) { if (!e) { return ( t === "attributeElement" || t === "view:attributeElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "attributeElement" || t === "view:attributeElement" || t === "element" || t === "view:element") ); } }; function Am() { if (_m(this)) { return null; } let t = this.parent; while (t && t.is("attributeElement")) { if (_m(t) > 1) { return null; } t = t.parent; } if (!t || _m(t) > 1) { return null; } return this.childCount; } function _m(t) { return Array.from(t.getChildren()).filter((t) => !t.is("uiElement")) .length; } class Cm extends Gh { constructor(t, e, n, i) { super(t, e, n, i); this.getFillerOffset = vm; } _insertChild(t, e) { if (e && (e instanceof Nu || Array.from(e).length > 0)) { throw new N("view-emptyelement-cannot-add", [this, e]); } return 0; } } Cm.prototype.is = function (t, e) { if (!e) { return ( t === "emptyElement" || t === "view:emptyElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "emptyElement" || t === "view:emptyElement" || t === "element" || t === "view:element") ); } }; function vm() { return null; } class ym extends Gh { constructor(t, e, n, i) { super(t, e, n, i); this.getFillerOffset = Em; } _insertChild(t, e) { if (e && (e instanceof Nu || Array.from(e).length > 0)) { throw new N("view-uielement-cannot-add", [this, e]); } return 0; } render(t, e) { return this.toDomElement(t); } toDomElement(t) { const e = t.createElement(this.name); for (const t of this.getAttributeKeys()) { e.setAttribute(t, this.getAttribute(t)); } return e; } } ym.prototype.is = function (t, e) { if (!e) { return ( t === "uiElement" || t === "view:uiElement" || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "uiElement" || t === "view:uiElement" || t === "element" || t === "view:element") ); } }; function xm(t) { t.document.on("arrowKey", (e, n) => Dm(e, n, t.domConverter), { priority: "low", }); } function Em() { return null; } function Dm(t, e, n) { if (e.keyCode == Wc.arrowright) { const t = e.domTarget.ownerDocument.defaultView.getSelection(); const i = t.rangeCount == 1 && t.getRangeAt(0).collapsed; if (i || e.shiftKey) { const e = t.focusNode; const o = t.focusOffset; const r = n.domPositionToView(e, o); if (r === null) { return; } let s = false; const a = r.getLastMatchingPosition((t) => { if (t.item.is("uiElement")) { s = true; } if (t.item.is("uiElement") || t.item.is("attributeElement")) { return true; } return false; }); if (s) { const e = n.viewPositionToDom(a); if (i) { t.collapse(e.parent, e.offset); } else { t.extend(e.parent, e.offset); } } } } } class Sm extends Gh { constructor(t, e, n, i) { super(t, e, n, i); this.getFillerOffset = Tm; } _insertChild(t, e) { if (e && (e instanceof Nu || Array.from(e).length > 0)) { throw new N("view-rawelement-cannot-add", [this, e]); } return 0; } render(t, e) {} } Sm.prototype.is = function (t, e) { if (!e) { return ( t === "rawElement" || t === "view:rawElement" || t === this.name || t === "view:" + this.name || t === "element" || t === "view:element" || t === "node" || t === "view:node" ); } else { return ( e === this.name && (t === "rawElement" || t === "view:rawElement" || t === "element" || t === "view:element") ); } }; function Tm() { return null; } class Bm extends G(Bu) { constructor(t, e) { super(); this._children = []; this._customProperties = new Map(); this.document = t; if (e) { this._insertChild(0, e); } } [Symbol.iterator]() { return this._children[Symbol.iterator](); } get childCount() { return this._children.length; } get isEmpty() { return this.childCount === 0; } get root() { return this; } get parent() { return null; } get name() { return undefined; } get getFillerOffset() { return undefined; } getCustomProperty(t) { return this._customProperties.get(t); } *getCustomProperties() { yield* this._customProperties.entries(); } _appendChild(t) { return this._insertChild(this.childCount, t); } getChild(t) { return this._children[t]; } getChildIndex(t) { return this._children.indexOf(t); } getChildren() { return this._children[Symbol.iterator](); } _insertChild(t, e) { this._fireChange("children", this); let n = 0; const i = Mm(this.document, e); for (const e of i) { if (e.parent !== null) { e._remove(); } e.parent = this; this._children.splice(t, 0, e); t++; n++; } return n; } _removeChildren(t, e = 1) { this._fireChange("children", this); for (let n = t; n < t + e; n++) { this._children[n].parent = null; } return this._children.splice(t, e); } _fireChange(t, e) { this.fire("change:" + t, e); } _setCustomProperty(t, e) { this._customProperties.set(t, e); } _removeCustomProperty(t) { return this._customProperties.delete(t); } } Bm.prototype.is = function (t) { return t === "documentFragment" || t === "view:documentFragment"; }; function Mm(t, e) { if (typeof e == "string") { return [new zu(t, e)]; } if (!Dt(e)) { e = [e]; } return Array.from(e).map((e) => { if (typeof e == "string") { return new zu(t, e); } if (e instanceof Pu) { return new zu(t, e.data); } return e; }); } class Im { constructor(t) { this._cloneGroups = new Map(); this._slotFactory = null; this.document = t; } setSelection(...t) { this.document.selection._setTo(...t); } setSelectionFocus(t, e) { this.document.selection._setFocus(t, e); } createDocumentFragment(t) { return new Bm(this.document, t); } createText(t) { return new zu(this.document, t); } createAttributeElement(t, e, n = {}) { const i = new wm(this.document, t, e); if (typeof n.priority === "number") { i._priority = n.priority; } if (n.id) { i._id = n.id; } if (n.renderUnsafeAttributes) { i._unsafeAttributesToRender.push(...n.renderUnsafeAttributes); } return i; } createContainerElement(t, e, n = {}, i = {}) { let o = null; if (fe(n)) { i = n; } else { o = n; } const r = new Zh(this.document, t, e, o); if (i.renderUnsafeAttributes) { r._unsafeAttributesToRender.push(...i.renderUnsafeAttributes); } return r; } createEditableElement(t, e, n = {}) { const i = new Xh(this.document, t, e); if (n.renderUnsafeAttributes) { i._unsafeAttributesToRender.push(...n.renderUnsafeAttributes); } return i; } createEmptyElement(t, e, n = {}) { const i = new Cm(this.document, t, e); if (n.renderUnsafeAttributes) { i._unsafeAttributesToRender.push(...n.renderUnsafeAttributes); } return i; } createUIElement(t, e, n) { const i = new ym(this.document, t, e); if (n) { i.render = n; } return i; } createRawElement(t, e, n, i = {}) { const o = new Sm(this.document, t, e); if (n) { o.render = n; } if (i.renderUnsafeAttributes) { o._unsafeAttributesToRender.push(...i.renderUnsafeAttributes); } return o; } setAttribute(t, e, n) { n._setAttribute(t, e); } removeAttribute(t, e) { e._removeAttribute(t); } addClass(t, e) { e._addClass(t); } removeClass(t, e) { e._removeClass(t); } setStyle(t, e, n) { if (fe(t) && n === undefined) { e._setStyle(t); } else { n._setStyle(t, e); } } removeStyle(t, e) { e._removeStyle(t); } setCustomProperty(t, e, n) { n._setCustomProperty(t, e); } removeCustomProperty(t, e) { return e._removeCustomProperty(t); } breakAttributes(t) { if (t instanceof im) { return this._breakAttributes(t); } else { return this._breakAttributesRange(t); } } breakContainer(t) { const e = t.parent; if (!e.is("containerElement")) { throw new N( "view-writer-break-non-container-element", this.document ); } if (!e.parent) { throw new N("view-writer-break-root", this.document); } if (t.isAtStart) { return im._createBefore(e); } else if (!t.isAtEnd) { const n = e._clone(false); this.insert(im._createAfter(e), n); const i = new om(t, im._createAt(e, "end")); const o = new im(n, 0); this.move(i, o); } return im._createAfter(e); } mergeAttributes(t) { const e = t.offset; const n = t.parent; if (n.is("$text")) { return t; } if (n.is("attributeElement") && n.childCount === 0) { const t = n.parent; const e = n.index; n._remove(); this._removeFromClonedElementsGroup(n); return this.mergeAttributes(new im(t, e)); } const i = n.getChild(e - 1); const o = n.getChild(e); if (!i || !o) { return t; } if (i.is("$text") && o.is("$text")) { return Vm(i, o); } else if ( i.is("attributeElement") && o.is("attributeElement") && i.isSimilar(o) ) { const t = i.childCount; i._appendChild(o.getChildren()); o._remove(); this._removeFromClonedElementsGroup(o); return this.mergeAttributes(new im(i, t)); } return t; } mergeContainers(t) { const e = t.nodeBefore; const n = t.nodeAfter; if ( !e || !n || !e.is("containerElement") || !n.is("containerElement") ) { throw new N( "view-writer-merge-containers-invalid-position", this.document ); } const i = e.getChild(e.childCount - 1); const o = i instanceof zu ? im._createAt(i, "end") : im._createAt(e, "end"); this.move(om._createIn(n), im._createAt(e, "end")); this.remove(om._createOn(n)); return o; } insert(t, e) { e = Dt(e) ? [...e] : [e]; Fm(e, this.document); const n = e.reduce((t, e) => { const n = t[t.length - 1]; const i = !e.is("uiElement"); if (!n || n.breakAttributes != i) { t.push({ breakAttributes: i, nodes: [e] }); } else { n.nodes.push(e); } return t; }, []); let i = null; let o = t; for (const { nodes: t, breakAttributes: e } of n) { const n = this._insertNodes(o, t, e); if (!i) { i = n.start; } o = n.end; } if (!i) { return new om(t); } return new om(i, o); } remove(t) { const e = t instanceof om ? t : om._createOn(t); Hm(e, this.document); if (e.isCollapsed) { return new Bm(this.document); } const { start: n, end: i } = this._breakAttributesRange(e, true); const o = n.parent; const r = i.offset - n.offset; const s = o._removeChildren(n.offset, r); for (const t of s) { this._removeFromClonedElementsGroup(t); } const a = this.mergeAttributes(n); e.start = a; e.end = a.clone(); return new Bm(this.document, s); } clear(t, e) { Hm(t, this.document); const n = t.getWalker({ direction: "backward", ignoreElementEnd: true, }); for (const i of n) { const n = i.item; let o; if (n.is("element") && e.isSimilar(n)) { o = om._createOn(n); } else if (!i.nextPosition.isAfter(t.start) && n.is("$textProxy")) { const t = n .getAncestors() .find((t) => t.is("element") && e.isSimilar(t)); if (t) { o = om._createIn(t); } } if (o) { if (o.end.isAfter(t.end)) { o.end = t.end; } if (o.start.isBefore(t.start)) { o.start = t.start; } this.remove(o); } } } move(t, e) { let n; if (e.isAfter(t.end)) { e = this._breakAttributes(e, true); const i = e.parent; const o = i.childCount; t = this._breakAttributesRange(t, true); n = this.remove(t); e.offset += i.childCount - o; } else { n = this.remove(t); } return this.insert(e, n); } wrap(t, e) { if (!(e instanceof wm)) { throw new N("view-writer-wrap-invalid-attribute", this.document); } Hm(t, this.document); if (!t.isCollapsed) { return this._wrapRange(t, e); } else { let n = t.start; if (n.parent.is("element") && !Lm(n.parent)) { n = n.getLastMatchingPosition((t) => t.item.is("uiElement")); } n = this._wrapPosition(n, e); const i = this.document.selection; if (i.isCollapsed && i.getFirstPosition().isEqual(t.start)) { this.setSelection(n); } return new om(n); } } unwrap(t, e) { if (!(e instanceof wm)) { throw new N("view-writer-unwrap-invalid-attribute", this.document); } Hm(t, this.document); if (t.isCollapsed) { return t; } const { start: n, end: i } = this._breakAttributesRange(t, true); const o = n.parent; const r = this._unwrapChildren(o, n.offset, i.offset, e); const s = this.mergeAttributes(r.start); if (!s.isEqual(r.start)) { r.end.offset--; } const a = this.mergeAttributes(r.end); return new om(s, a); } rename(t, e) { const n = new Zh(this.document, t, e.getAttributes()); this.insert(im._createAfter(e), n); this.move(om._createIn(e), im._createAt(n, 0)); this.remove(om._createOn(e)); return n; } clearClonedElementsGroup(t) { this._cloneGroups.delete(t); } createPositionAt(t, e) { return im._createAt(t, e); } createPositionAfter(t) { return im._createAfter(t); } createPositionBefore(t) { return im._createBefore(t); } createRange(t, e) { return new om(t, e); } createRangeOn(t) { return om._createOn(t); } createRangeIn(t) { return om._createIn(t); } createSelection(...t) { return new sm(...t); } createSlot(t = "children") { if (!this._slotFactory) { throw new N( "view-writer-invalid-create-slot-context", this.document ); } return this._slotFactory(this, t); } _registerSlotFactory(t) { this._slotFactory = t; } _clearSlotFactory() { this._slotFactory = null; } _insertNodes(t, e, n) { let i; if (n) { i = Nm(t); } else { i = t.parent.is("$text") ? t.parent.parent : t.parent; } if (!i) { throw new N( "view-writer-invalid-position-container", this.document ); } let o; if (n) { o = this._breakAttributes(t, true); } else { o = t.parent.is("$text") ? Rm(t) : t; } const r = i._insertChild(o.offset, e); for (const t of e) { this._addToClonedElementsGroup(t); } const s = o.getShiftedBy(r); const a = this.mergeAttributes(o); if (!a.isEqual(o)) { s.offset--; } const c = this.mergeAttributes(s); return new om(a, c); } _wrapChildren(t, e, n, i) { let o = e; const r = []; while (o < n) { const e = t.getChild(o); const n = e.is("$text"); const s = e.is("attributeElement"); if (s && this._wrapAttributeElement(i, e)) { r.push(new im(t, o)); } else if (n || !s || zm(i, e)) { const n = i._clone(); e._remove(); n._appendChild(e); t._insertChild(o, n); this._addToClonedElementsGroup(n); r.push(new im(t, o)); } else { this._wrapChildren(e, 0, e.childCount, i); } o++; } let s = 0; for (const t of r) { t.offset -= s; if (t.offset == e) { continue; } const i = this.mergeAttributes(t); if (!i.isEqual(t)) { s++; n--; } } return om._createFromParentsAndOffsets(t, e, t, n); } _unwrapChildren(t, e, n, i) { let o = e; const r = []; while (o < n) { const e = t.getChild(o); if (!e.is("attributeElement")) { o++; continue; } if (e.isSimilar(i)) { const i = e.getChildren(); const s = e.childCount; e._remove(); t._insertChild(o, i); this._removeFromClonedElementsGroup(e); r.push(new im(t, o), new im(t, o + s)); o += s; n += s - 1; continue; } if (this._unwrapAttributeElement(i, e)) { r.push(new im(t, o), new im(t, o + 1)); o++; continue; } this._unwrapChildren(e, 0, e.childCount, i); o++; } let s = 0; for (const t of r) { t.offset -= s; if (t.offset == e || t.offset == n) { continue; } const i = this.mergeAttributes(t); if (!i.isEqual(t)) { s++; n--; } } return om._createFromParentsAndOffsets(t, e, t, n); } _wrapRange(t, e) { const { start: n, end: i } = this._breakAttributesRange(t, true); const o = n.parent; const r = this._wrapChildren(o, n.offset, i.offset, e); const s = this.mergeAttributes(r.start); if (!s.isEqual(r.start)) { r.end.offset--; } const a = this.mergeAttributes(r.end); return new om(s, a); } _wrapPosition(t, e) { if (e.isSimilar(t.parent)) { return Pm(t.clone()); } if (t.parent.is("$text")) { t = Rm(t); } const n = this.createAttributeElement("_wrapPosition-fake-element"); n._priority = Number.POSITIVE_INFINITY; n.isSimilar = () => false; t.parent._insertChild(t.offset, n); const i = new om(t, t.getShiftedBy(1)); this.wrap(i, e); const o = new im(n.parent, n.index); n._remove(); const r = o.nodeBefore; const s = o.nodeAfter; if (r instanceof zu && s instanceof zu) { return Vm(r, s); } return Pm(o); } _wrapAttributeElement(t, e) { if (!Um(t, e)) { return false; } if (t.name !== e.name || t.priority !== e.priority) { return false; } for (const n of t.getAttributeKeys()) { if (n === "class" || n === "style") { continue; } if (e.hasAttribute(n) && e.getAttribute(n) !== t.getAttribute(n)) { return false; } } for (const n of t.getStyleNames()) { if (e.hasStyle(n) && e.getStyle(n) !== t.getStyle(n)) { return false; } } for (const n of t.getAttributeKeys()) { if (n === "class" || n === "style") { continue; } if (!e.hasAttribute(n)) { this.setAttribute(n, t.getAttribute(n), e); } } for (const n of t.getStyleNames()) { if (!e.hasStyle(n)) { this.setStyle(n, t.getStyle(n), e); } } for (const n of t.getClassNames()) { if (!e.hasClass(n)) { this.addClass(n, e); } } return true; } _unwrapAttributeElement(t, e) { if (!Um(t, e)) { return false; } if (t.name !== e.name || t.priority !== e.priority) { return false; } for (const n of t.getAttributeKeys()) { if (n === "class" || n === "style") { continue; } if (!e.hasAttribute(n) || e.getAttribute(n) !== t.getAttribute(n)) { return false; } } if (!e.hasClass(...t.getClassNames())) { return false; } for (const n of t.getStyleNames()) { if (!e.hasStyle(n) || e.getStyle(n) !== t.getStyle(n)) { return false; } } for (const n of t.getAttributeKeys()) { if (n === "class" || n === "style") { continue; } this.removeAttribute(n, e); } this.removeClass(Array.from(t.getClassNames()), e); this.removeStyle(Array.from(t.getStyleNames()), e); return true; } _breakAttributesRange(t, e = false) { const n = t.start; const i = t.end; Hm(t, this.document); if (t.isCollapsed) { const n = this._breakAttributes(t.start, e); return new om(n, n); } const o = this._breakAttributes(i, e); const r = o.parent.childCount; const s = this._breakAttributes(n, e); o.offset += o.parent.childCount - r; return new om(s, o); } _breakAttributes(t, e = false) { const n = t.offset; const i = t.parent; if (t.parent.is("emptyElement")) { throw new N( "view-writer-cannot-break-empty-element", this.document ); } if (t.parent.is("uiElement")) { throw new N("view-writer-cannot-break-ui-element", this.document); } if (t.parent.is("rawElement")) { throw new N("view-writer-cannot-break-raw-element", this.document); } if (!e && i.is("$text") && jm(i.parent)) { return t.clone(); } if (jm(i)) { return t.clone(); } if (i.is("$text")) { return this._breakAttributes(Rm(t), e); } const o = i.childCount; if (n == o) { const t = new im(i.parent, i.index + 1); return this._breakAttributes(t, e); } else { if (n === 0) { const t = new im(i.parent, i.index); return this._breakAttributes(t, e); } else { const t = i.index + 1; const o = i._clone(); i.parent._insertChild(t, o); this._addToClonedElementsGroup(o); const r = i.childCount - n; const s = i._removeChildren(n, r); o._appendChild(s); const a = new im(i.parent, t); return this._breakAttributes(a, e); } } } _addToClonedElementsGroup(t) { if (!t.root.is("rootElement")) { return; } if (t.is("element")) { for (const e of t.getChildren()) { this._addToClonedElementsGroup(e); } } const e = t.id; if (!e) { return; } let n = this._cloneGroups.get(e); if (!n) { n = new Set(); this._cloneGroups.set(e, n); } n.add(t); t._clonesGroup = n; } _removeFromClonedElementsGroup(t) { if (t.is("element")) { for (const e of t.getChildren()) { this._removeFromClonedElementsGroup(e); } } const e = t.id; if (!e) { return; } const n = this._cloneGroups.get(e); if (!n) { return; } n.delete(t); } } function Lm(t) { return Array.from(t.getChildren()).some((t) => !t.is("uiElement")); } function Nm(t) { let e = t.parent; while (!jm(e)) { if (!e) { return undefined; } e = e.parent; } return e; } function zm(t, e) { if (t.priority < e.priority) { return true; } else if (t.priority > e.priority) { return false; } return t.getIdentity() < e.getIdentity(); } function Pm(t) { const e = t.nodeBefore; if (e && e.is("$text")) { return new im(e, e.data.length); } const n = t.nodeAfter; if (n && n.is("$text")) { return new im(n, 0); } return t; } function Rm(t) { if (t.offset == t.parent.data.length) { return new im(t.parent.parent, t.parent.index + 1); } if (t.offset === 0) { return new im(t.parent.parent, t.parent.index); } const e = t.parent.data.slice(t.offset); t.parent._data = t.parent.data.slice(0, t.offset); t.parent.parent._insertChild( t.parent.index + 1, new zu(t.root.document, e) ); return new im(t.parent.parent, t.parent.index + 1); } function Vm(t, e) { const n = t.data.length; t._data += e.data; e._remove(); return new im(t, n); } const Om = [zu, wm, Zh, Cm, Sm, ym]; function Fm(t, e) { for (const n of t) { if (!Om.some((t) => n instanceof t)) { throw new N("view-writer-insert-invalid-node-type", e); } if (!n.is("$text")) { Fm(n.getChildren(), e); } } } function jm(t) { return t && (t.is("containerElement") || t.is("documentFragment")); } function Hm(t, e) { const n = Nm(t.start); const i = Nm(t.end); if (!n || !i || n !== i) { throw new N("view-writer-invalid-range-container", e); } } function Um(t, e) { return t.id === null && e.id === null; } const $m = (t) => t.createTextNode(" "); const qm = (t) => { const e = t.createElement("span"); e.dataset.ckeFiller = "true"; e.innerText = " "; return e; }; const Wm = (t) => { const e = t.createElement("br"); e.dataset.ckeFiller = "true"; return e; }; const Gm = 7; const Km = "⁠".repeat(Gm); function Ym(t) { if (typeof t == "string") { return t.substr(0, Gm) === Km; } return rc(t) && t.data.substr(0, Gm) === Km; } function Qm(t) { return t.data.length == Gm && Ym(t); } function Zm(t) { const e = typeof t == "string" ? t : t.data; if (Ym(t)) { return e.slice(Gm); } return e; } function Jm(t) { t.document.on("arrowKey", Xm, { priority: "low" }); } function Xm(t, e) { if (e.keyCode == Wc.arrowleft) { const t = e.domTarget.ownerDocument.defaultView.getSelection(); if (t.rangeCount == 1 && t.getRangeAt(0).collapsed) { const e = t.getRangeAt(0).startContainer; const n = t.getRangeAt(0).startOffset; if (Ym(e) && n <= Gm) { t.collapse(e, 0); } } } } var tg = n(7526); var eg = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; eg.insert = "head"; eg.singleton = true; var ng = Zd()(tg.A, eg); const ig = tg.A.locals || {}; class og extends mt() { constructor(t, e) { super(); this.domDocuments = new Set(); this.markedAttributes = new Set(); this.markedChildren = new Set(); this.markedTexts = new Set(); this._inlineFiller = null; this._fakeSelectionContainer = null; this.domConverter = t; this.selection = e; this.set("isFocused", false); this.set("isSelecting", false); if (a.isBlink && !a.isAndroid) { this.on("change:isSelecting", () => { if (!this.isSelecting) { this.render(); } }); } this.set("isComposing", false); this.on("change:isComposing", () => { if (!this.isComposing) { this.render(); } }); } markToSync(t, e) { if (t === "text") { if (this.domConverter.mapViewToDom(e.parent)) { this.markedTexts.add(e); } } else { if (!this.domConverter.mapViewToDom(e)) { return; } if (t === "attributes") { this.markedAttributes.add(e); } else if (t === "children") { this.markedChildren.add(e); } else { const e = t; throw new N("view-renderer-unknown-type", this); } } } render() { if (this.isComposing && !a.isAndroid) { return; } let t = null; const e = a.isBlink && !a.isAndroid ? !this.isSelecting : true; for (const t of this.markedChildren) { this._updateChildrenMappings(t); } if (e) { if (this._inlineFiller && !this._isSelectionInInlineFiller()) { this._removeInlineFiller(); } if (this._inlineFiller) { t = this._getInlineFillerPosition(); } else if (this._needsInlineFillerAtSelection()) { t = this.selection.getFirstPosition(); this.markedChildren.add(t.parent); } } else if (this._inlineFiller && this._inlineFiller.parentNode) { t = this.domConverter.domPositionToView(this._inlineFiller); if (t && t.parent.is("$text")) { t = im._createBefore(t.parent); } } for (const t of this.markedAttributes) { this._updateAttrs(t); } for (const e of this.markedChildren) { this._updateChildren(e, { inlineFillerPosition: t }); } for (const e of this.markedTexts) { if ( !this.markedChildren.has(e.parent) && this.domConverter.mapViewToDom(e.parent) ) { this._updateText(e, { inlineFillerPosition: t }); } } if (e) { if (t) { const e = this.domConverter.viewPositionToDom(t); const n = e.parent.ownerDocument; if (!Ym(e.parent)) { this._inlineFiller = sg(n, e.parent, e.offset); } else { this._inlineFiller = e.parent; } } else { this._inlineFiller = null; } } this._updateFocus(); this._updateSelection(); this.domConverter._clearTemporaryCustomProperties(); this.markedTexts.clear(); this.markedAttributes.clear(); this.markedChildren.clear(); } _updateChildrenMappings(t) { const e = this.domConverter.mapViewToDom(t); if (!e) { return; } const n = Array.from(e.childNodes); const i = Array.from( this.domConverter.viewChildrenToDom(t, { withChildren: false }) ); const o = this._diffNodeLists(n, i); const r = this._findUpdateActions(o, n, i, ag); if (r.indexOf("update") !== -1) { const e = { equal: 0, insert: 0, delete: 0 }; for (const o of r) { if (o === "update") { const o = e.equal + e.insert; const r = e.equal + e.delete; const s = t.getChild(o); if (s && !s.is("uiElement") && !s.is("rawElement")) { this._updateElementMappings(s, n[r]); } Bc(i[o]); e.equal++; } else { e[o]++; } } } } _updateElementMappings(t, e) { this.domConverter.unbindDomElement(e); this.domConverter.bindElements(e, t); this.markedChildren.add(t); this.markedAttributes.add(t); } _getInlineFillerPosition() { const t = this.selection.getFirstPosition(); if (t.parent.is("$text")) { return im._createBefore(t.parent); } else { return t; } } _isSelectionInInlineFiller() { if (this.selection.rangeCount != 1 || !this.selection.isCollapsed) { return false; } const t = this.selection.getFirstPosition(); const e = this.domConverter.viewPositionToDom(t); if (e && rc(e.parent) && Ym(e.parent)) { return true; } return false; } _removeInlineFiller() { const t = this._inlineFiller; if (!Ym(t)) { throw new N("view-renderer-filler-was-lost", this); } if (Qm(t)) { t.remove(); } else { t.data = t.data.substr(Gm); } this._inlineFiller = null; } _needsInlineFillerAtSelection() { if (this.selection.rangeCount != 1 || !this.selection.isCollapsed) { return false; } const t = this.selection.getFirstPosition(); const e = t.parent; const n = t.offset; if (!this.domConverter.mapViewToDom(e.root)) { return false; } if (!e.is("element")) { return false; } if (!rg(e)) { return false; } const i = t.nodeBefore; const o = t.nodeAfter; if (i instanceof zu || o instanceof zu) { return false; } if (n === e.getFillerOffset() && (!i || !i.is("element", "br"))) { return false; } if (a.isAndroid && (i || o)) { return false; } return true; } _updateText(t, e) { const n = this.domConverter.findCorrespondingDomText(t); const i = this.domConverter.viewToDom(t); let o = i.data; const r = e.inlineFillerPosition; if (r && r.parent == t.parent && r.offset == t.index) { o = Km + o; } mg(n, o); } _updateAttrs(t) { const e = this.domConverter.mapViewToDom(t); if (!e) { return; } const n = Array.from(e.attributes).map((t) => t.name); const i = t.getAttributeKeys(); for (const n of i) { this.domConverter.setDomElementAttribute( e, n, t.getAttribute(n), t ); } for (const i of n) { if (!t.hasAttribute(i)) { this.domConverter.removeDomElementAttribute(e, i); } } } _updateChildren(t, e) { const n = this.domConverter.mapViewToDom(t); if (!n) { return; } if (a.isAndroid) { let t = null; for (const e of Array.from(n.childNodes)) { if (t && rc(t) && rc(e)) { n.normalize(); break; } t = e; } } const i = e.inlineFillerPosition; const o = n.childNodes; const r = Array.from( this.domConverter.viewChildrenToDom(t, { bind: true }) ); if (i && i.parent === t) { sg(n.ownerDocument, r, i.offset); } const s = this._diffNodeLists(o, r); const c = this._findUpdateActions(s, o, r, cg); let l = 0; const d = new Set(); for (const t of c) { if (t === "delete") { d.add(o[l]); Bc(o[l]); } else if (t === "equal" || t === "update") { l++; } } l = 0; for (const t of c) { if (t === "insert") { _c(n, l, r[l]); l++; } else if (t === "update") { mg(o[l], r[l].data); l++; } else if (t === "equal") { this._markDescendantTextToSync(this.domConverter.domToView(r[l])); l++; } } for (const t of d) { if (!t.parentNode) { this.domConverter.unbindDomElement(t); } } } _diffNodeLists(t, e) { t = ug(t, this._fakeSelectionContainer); return y(t, e, lg.bind(null, this.domConverter)); } _findUpdateActions(t, e, n, i) { if (t.indexOf("insert") === -1 || t.indexOf("delete") === -1) { return t; } let o = []; let r = []; let s = []; const a = { equal: 0, insert: 0, delete: 0 }; for (const c of t) { if (c === "insert") { s.push(n[a.equal + a.insert]); } else if (c === "delete") { r.push(e[a.equal + a.delete]); } else { o = o.concat( y(r, s, i).map((t) => (t === "equal" ? "update" : t)) ); o.push("equal"); r = []; s = []; } a[c]++; } return o.concat( y(r, s, i).map((t) => (t === "equal" ? "update" : t)) ); } _markDescendantTextToSync(t) { if (!t) { return; } if (t.is("$text")) { this.markedTexts.add(t); } else if (t.is("element")) { for (const e of t.getChildren()) { this._markDescendantTextToSync(e); } } } _updateSelection() { if ( a.isBlink && !a.isAndroid && this.isSelecting && !this.markedChildren.size ) { return; } if (this.selection.rangeCount === 0) { this._removeDomSelection(); this._removeFakeSelection(); return; } const t = this.domConverter.mapViewToDom( this.selection.editableElement ); if (!this.isFocused || !t) { return; } if (this.selection.isFake) { this._updateFakeSelection(t); } else if ( this._fakeSelectionContainer && this._fakeSelectionContainer.isConnected ) { this._removeFakeSelection(); this._updateDomSelection(t); } else if (!(this.isComposing && a.isAndroid)) { this._updateDomSelection(t); } } _updateFakeSelection(t) { const e = t.ownerDocument; if (!this._fakeSelectionContainer) { this._fakeSelectionContainer = hg(e); } const n = this._fakeSelectionContainer; this.domConverter.bindFakeSelection(n, this.selection); if (!this._fakeSelectionNeedsUpdate(t)) { return; } if (!n.parentElement || n.parentElement != t) { t.appendChild(n); } n.textContent = this.selection.fakeSelectionLabel || " "; const i = e.getSelection(); const o = e.createRange(); i.removeAllRanges(); o.selectNodeContents(n); i.addRange(o); } _updateDomSelection(t) { const e = t.ownerDocument.defaultView.getSelection(); if (!this._domSelectionNeedsUpdate(e)) { return; } const n = this.domConverter.viewPositionToDom(this.selection.anchor); const i = this.domConverter.viewPositionToDom(this.selection.focus); e.setBaseAndExtent(n.parent, n.offset, i.parent, i.offset); if (a.isGecko) { dg(i, e); } } _domSelectionNeedsUpdate(t) { if (!this.domConverter.isDomSelectionCorrect(t)) { return true; } const e = t && this.domConverter.domSelectionToView(t); if (e && this.selection.isEqual(e)) { return false; } if (!this.selection.isCollapsed && this.selection.isSimilar(e)) { return false; } return true; } _fakeSelectionNeedsUpdate(t) { const e = this._fakeSelectionContainer; const n = t.ownerDocument.getSelection(); if (!e || e.parentElement !== t) { return true; } if (n.anchorNode !== e && !e.contains(n.anchorNode)) { return true; } return e.textContent !== this.selection.fakeSelectionLabel; } _removeDomSelection() { for (const t of this.domDocuments) { const e = t.getSelection(); if (e.rangeCount) { const n = t.activeElement; const i = this.domConverter.mapDomToView(n); if (n && i) { e.removeAllRanges(); } } } } _removeFakeSelection() { const t = this._fakeSelectionContainer; if (t) { t.remove(); } } _updateFocus() { if (this.isFocused) { const t = this.selection.editableElement; if (t) { this.domConverter.focus(t); } } } } function rg(t) { if (t.getAttribute("contenteditable") == "false") { return false; } const e = t.findAncestor((t) => t.hasAttribute("contenteditable")); return !e || e.getAttribute("contenteditable") == "true"; } function sg(t, e, n) { const i = e instanceof Array ? e : e.childNodes; const o = i[n]; if (rc(o)) { o.data = Km + o.data; return o; } else { const o = t.createTextNode(Km); if (Array.isArray(e)) { i.splice(n, 0, o); } else { _c(e, n, o); } return o; } } function ag(t, e) { return ( Ka(t) && Ka(e) && !rc(t) && !rc(e) && !Cc(t) && !Cc(e) && t.tagName.toLowerCase() === e.tagName.toLowerCase() ); } function cg(t, e) { return Ka(t) && Ka(e) && rc(t) && rc(e); } function lg(t, e, n) { if (e === n) { return true; } else if (rc(e) && rc(n)) { return e.data === n.data; } else if (t.isBlockFiller(e) && t.isBlockFiller(n)) { return true; } return false; } function dg(t, e) { let n = t.parent; let i = t.offset; if (rc(n) && Qm(n)) { i = Ac(n) + 1; n = n.parentNode; } if (n.nodeType != Node.ELEMENT_NODE || i != n.childNodes.length - 1) { return; } const o = n.childNodes[i]; if (o && o.tagName == "BR") { e.addRange(e.getRangeAt(0)); } } function ug(t, e) { const n = Array.from(t); if (n.length == 0 || !e) { return n; } const i = n[n.length - 1]; if (i == e) { n.pop(); } return n; } function hg(t) { const e = t.createElement("div"); e.className = "ck-fake-selection-container"; Object.assign(e.style, { position: "fixed", top: 0, left: "-9999px", width: "42px", }); e.textContent = " "; return e; } function mg(t, e) { const n = t.data; if (n == e) { return; } const i = b(n, e); for (const e of i) { if (e.type === "insert") { t.insertData(e.index, e.values.join("")); } else { t.deleteData(e.index, e.howMany); } } } const gg = Wm(e.document); const fg = $m(e.document); const pg = qm(e.document); const kg = "data-ck-unsafe-attribute-"; const bg = "data-ck-unsafe-element"; class wg { constructor( t, { blockFillerMode: n, renderingMode: i = "editing" } = {} ) { this._domToViewMapping = new WeakMap(); this._viewToDomMapping = new WeakMap(); this._fakeSelectionMapping = new WeakMap(); this._rawContentElementMatcher = new Ru(); this._inlineObjectElementMatcher = new Ru(); this._elementsWithTemporaryCustomProperties = new Set(); this.document = t; this.renderingMode = i; this.blockFillerMode = n || (i === "editing" ? "br" : "nbsp"); this.preElements = ["pre"]; this.blockElements = [ "address", "article", "aside", "blockquote", "caption", "center", "dd", "details", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "legend", "li", "main", "menu", "nav", "ol", "p", "pre", "section", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "ul", ]; this.inlineObjectElements = [ "object", "iframe", "input", "button", "textarea", "select", "option", "video", "embed", "audio", "img", "canvas", ]; this.unsafeElements = ["script", "style"]; this._domDocument = this.renderingMode === "editing" ? e.document : e.document.implementation.createHTMLDocument(""); } bindFakeSelection(t, e) { this._fakeSelectionMapping.set(t, new sm(e)); } fakeSelectionToView(t) { return this._fakeSelectionMapping.get(t); } bindElements(t, e) { this._domToViewMapping.set(t, e); this._viewToDomMapping.set(e, t); } unbindDomElement(t) { const e = this._domToViewMapping.get(t); if (e) { this._domToViewMapping.delete(t); this._viewToDomMapping.delete(e); for (const e of Array.from(t.children)) { this.unbindDomElement(e); } } } bindDocumentFragments(t, e) { this._domToViewMapping.set(t, e); this._viewToDomMapping.set(e, t); } shouldRenderAttribute(t, e, n) { if (this.renderingMode === "data") { return true; } t = t.toLowerCase(); if (t.startsWith("on")) { return false; } if ( t === "srcdoc" && e.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i) ) { return false; } if (n === "img" && (t === "src" || t === "srcset")) { return true; } if (n === "source" && t === "srcset") { return true; } if (e.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i)) { return false; } return true; } setContentOf(t, e) { if (this.renderingMode === "data") { t.innerHTML = e; return; } const n = new DOMParser().parseFromString(e, "text/html"); const i = n.createDocumentFragment(); const o = n.body.childNodes; while (o.length > 0) { i.appendChild(o[0]); } const r = n.createTreeWalker(i, NodeFilter.SHOW_ELEMENT); const s = []; let a; while ((a = r.nextNode())) { s.push(a); } for (const t of s) { for (const e of t.getAttributeNames()) { this.setDomElementAttribute(t, e, t.getAttribute(e)); } const e = t.tagName.toLowerCase(); if (this._shouldRenameElement(e)) { yg(e); t.replaceWith(this._createReplacementDomElement(e, t)); } } while (t.firstChild) { t.firstChild.remove(); } t.append(i); } viewToDom(t, e = {}) { if (t.is("$text")) { const e = this._processDataFromViewText(t); return this._domDocument.createTextNode(e); } else { const n = t; if (this.mapViewToDom(n)) { if (n.getCustomProperty("editingPipeline:doNotReuseOnce")) { this._elementsWithTemporaryCustomProperties.add(n); } else { return this.mapViewToDom(n); } } let i; if (n.is("documentFragment")) { i = this._domDocument.createDocumentFragment(); if (e.bind) { this.bindDocumentFragments(i, n); } } else if (n.is("uiElement")) { if (n.name === "$comment") { i = this._domDocument.createComment( n.getCustomProperty("$rawContent") ); } else { i = n.render(this._domDocument, this); } if (e.bind) { this.bindElements(i, n); } return i; } else { if (this._shouldRenameElement(n.name)) { yg(n.name); i = this._createReplacementDomElement(n.name); } else if (n.hasAttribute("xmlns")) { i = this._domDocument.createElementNS( n.getAttribute("xmlns"), n.name ); } else { i = this._domDocument.createElement(n.name); } if (n.is("rawElement")) { n.render(i, this); } if (e.bind) { this.bindElements(i, n); } for (const t of n.getAttributeKeys()) { this.setDomElementAttribute(i, t, n.getAttribute(t), n); } } if (e.withChildren !== false) { for (const t of this.viewChildrenToDom(n, e)) { if (i instanceof HTMLTemplateElement) { i.content.appendChild(t); } else { i.appendChild(t); } } } return i; } } setDomElementAttribute(t, e, n, i) { const o = this.shouldRenderAttribute(e, n, t.tagName.toLowerCase()) || (i && i.shouldRenderUnsafeAttribute(e)); if (!o) { z("domconverter-unsafe-attribute-detected", { domElement: t, key: e, value: n, }); } if (!vc(e)) { z("domconverter-invalid-attribute-detected", { domElement: t, key: e, value: n, }); return; } if (t.hasAttribute(e) && !o) { t.removeAttribute(e); } else if (t.hasAttribute(kg + e) && o) { t.removeAttribute(kg + e); } t.setAttribute(o ? e : kg + e, n); } removeDomElementAttribute(t, e) { if (e == bg) { return; } t.removeAttribute(e); t.removeAttribute(kg + e); } *viewChildrenToDom(t, e = {}) { const n = t.getFillerOffset && t.getFillerOffset(); let i = 0; for (const o of t.getChildren()) { if (n === i) { yield this._getBlockFiller(); } const t = o.is("element") && !!o.getCustomProperty("dataPipeline:transparentRendering") && !id(o.getAttributes()); if (t && this.renderingMode == "data") { yield* this.viewChildrenToDom(o, e); } else { if (t) { z( "domconverter-transparent-rendering-unsupported-in-editing-pipeline", { viewElement: o } ); } yield this.viewToDom(o, e); } i++; } if (n === i) { yield this._getBlockFiller(); } } viewRangeToDom(t) { const e = this.viewPositionToDom(t.start); const n = this.viewPositionToDom(t.end); const i = this._domDocument.createRange(); i.setStart(e.parent, e.offset); i.setEnd(n.parent, n.offset); return i; } viewPositionToDom(t) { const e = t.parent; if (e.is("$text")) { const n = this.findCorrespondingDomText(e); if (!n) { return null; } let i = t.offset; if (Ym(n)) { i += Gm; } return { parent: n, offset: i }; } else { let n, i, o; if (t.offset === 0) { n = this.mapViewToDom(e); if (!n) { return null; } o = n.childNodes[0]; } else { const e = t.nodeBefore; i = e.is("$text") ? this.findCorrespondingDomText(e) : this.mapViewToDom(e); if (!i) { return null; } n = i.parentNode; o = i.nextSibling; } if (rc(o) && Ym(o)) { return { parent: o, offset: Gm }; } const r = i ? Ac(i) + 1 : 0; return { parent: n, offset: r }; } } domToView(t, e = {}) { const n = []; const i = this._domToView(t, e, n); const o = i.next().value; if (!o) { return null; } i.next(); this._processDomInlineNodes(null, n, e); if (o.is("$text") && o.data.length == 0) { return null; } return o; } *domChildrenToView(t, e = {}, n = []) { let i = []; if (t instanceof HTMLTemplateElement) { i = [...t.content.childNodes]; } else { i = [...t.childNodes]; } for (let o = 0; o < i.length; o++) { const r = i[o]; const s = this._domToView(r, e, n); const a = s.next().value; if (a !== null) { if (this._isBlockViewElement(a)) { this._processDomInlineNodes(t, n, e); } yield a; s.next(); } } this._processDomInlineNodes(t, n, e); } domSelectionToView(t) { if (xg(t)) { return new sm([]); } if (t.rangeCount === 1) { let e = t.getRangeAt(0).startContainer; if (rc(e)) { e = e.parentNode; } const n = this.fakeSelectionToView(e); if (n) { return n; } } const e = this.isDomSelectionBackward(t); const n = []; for (let e = 0; e < t.rangeCount; e++) { const i = t.getRangeAt(e); const o = this.domRangeToView(i); if (o) { n.push(o); } } return new sm(n, { backward: e }); } domRangeToView(t) { const e = this.domPositionToView(t.startContainer, t.startOffset); const n = this.domPositionToView(t.endContainer, t.endOffset); if (e && n) { return new om(e, n); } return null; } domPositionToView(t, e = 0) { if (this.isBlockFiller(t)) { return this.domPositionToView(t.parentNode, Ac(t)); } const n = this.mapDomToView(t); if (n && (n.is("uiElement") || n.is("rawElement"))) { return im._createBefore(n); } if (rc(t)) { if (Qm(t)) { return this.domPositionToView(t.parentNode, Ac(t)); } const n = this.findCorrespondingViewText(t); let i = e; if (!n) { return null; } if (Ym(t)) { i -= Gm; i = i < 0 ? 0 : i; } return new im(n, i); } else { if (e === 0) { const e = this.mapDomToView(t); if (e) { return new im(e, 0); } } else { const n = t.childNodes[e - 1]; if ((rc(n) && Qm(n)) || (n && this.isBlockFiller(n))) { return this.domPositionToView(n.parentNode, Ac(n)); } const i = rc(n) ? this.findCorrespondingViewText(n) : this.mapDomToView(n); if (i && i.parent) { return new im(i.parent, i.index + 1); } } return null; } } mapDomToView(t) { const e = this.getHostViewElement(t); return e || this._domToViewMapping.get(t); } findCorrespondingViewText(t) { if (Qm(t)) { return null; } const e = this.getHostViewElement(t); if (e) { return e; } const n = t.previousSibling; if (n) { if (!this.isElement(n)) { return null; } const t = this.mapDomToView(n); if (t) { const e = t.nextSibling; if (e instanceof zu) { return e; } else { return null; } } } else { const e = this.mapDomToView(t.parentNode); if (e) { const t = e.getChild(0); if (t instanceof zu) { return t; } else { return null; } } } return null; } mapViewToDom(t) { return this._viewToDomMapping.get(t); } findCorrespondingDomText(t) { const e = t.previousSibling; if (e && this.mapViewToDom(e)) { return this.mapViewToDom(e).nextSibling; } if (!e && t.parent && this.mapViewToDom(t.parent)) { return this.mapViewToDom(t.parent).childNodes[0]; } return null; } focus(t) { const n = this.mapViewToDom(t); if (n && n.ownerDocument.activeElement !== n) { const { scrollX: t, scrollY: i } = e.window; const o = []; _g(n, (t) => { const { scrollLeft: e, scrollTop: n } = t; o.push([e, n]); }); n.focus(); _g(n, (t) => { const [e, n] = o.shift(); t.scrollLeft = e; t.scrollTop = n; }); e.window.scrollTo(t, i); } } _clearDomSelection() { const t = this.mapViewToDom(this.document.selection.editableElement); if (!t) { return; } const e = t.ownerDocument.defaultView.getSelection(); const n = this.domSelectionToView(e); const i = n && n.rangeCount > 0; if (i) { e.removeAllRanges(); } } isElement(t) { return t && t.nodeType == Node.ELEMENT_NODE; } isDocumentFragment(t) { return t && t.nodeType == Node.DOCUMENT_FRAGMENT_NODE; } isBlockFiller(t) { if (this.blockFillerMode == "br") { return t.isEqualNode(gg); } if ( t.tagName === "BR" && vg(t, this.blockElements) && t.parentNode.childNodes.length === 1 ) { return true; } return t.isEqualNode(pg) || Cg(t, this.blockElements); } isDomSelectionBackward(t) { if (t.isCollapsed) { return false; } const e = this._domDocument.createRange(); try { e.setStart(t.anchorNode, t.anchorOffset); e.setEnd(t.focusNode, t.focusOffset); } catch (t) { return false; } const n = e.collapsed; e.detach(); return n; } getHostViewElement(t) { const e = nc(t); e.pop(); while (e.length) { const t = e.pop(); const n = this._domToViewMapping.get(t); if (n && (n.is("uiElement") || n.is("rawElement"))) { return n; } } return null; } isDomSelectionCorrect(t) { return ( this._isDomSelectionPositionCorrect(t.anchorNode, t.anchorOffset) && this._isDomSelectionPositionCorrect(t.focusNode, t.focusOffset) ); } registerRawContentMatcher(t) { this._rawContentElementMatcher.add(t); } registerInlineObjectMatcher(t) { this._inlineObjectElementMatcher.add(t); } _clearTemporaryCustomProperties() { for (const t of this._elementsWithTemporaryCustomProperties) { t._removeCustomProperty("editingPipeline:doNotReuseOnce"); } this._elementsWithTemporaryCustomProperties.clear(); } _getBlockFiller() { switch (this.blockFillerMode) { case "nbsp": return $m(this._domDocument); case "markedNbsp": return qm(this._domDocument); case "br": return Wm(this._domDocument); } } _isDomSelectionPositionCorrect(t, e) { if (rc(t) && Ym(t) && e < Gm) { return false; } if (this.isElement(t) && Ym(t.childNodes[e])) { return false; } const n = this.mapDomToView(t); if (n && (n.is("uiElement") || n.is("rawElement"))) { return false; } return true; } *_domToView(t, e, n) { if (this.isBlockFiller(t)) { return null; } const i = this.getHostViewElement(t); if (i) { return i; } if (Cc(t) && e.skipComments) { return null; } if (rc(t)) { if (Qm(t)) { return null; } else { const e = t.data; if (e === "") { return null; } const i = new zu(this.document, e); n.push(i); return i; } } else { let i = this.mapDomToView(t); if (i) { if (this._isInlineObjectElement(i)) { n.push(i); } return i; } if (this.isDocumentFragment(t)) { i = new Bm(this.document); if (e.bind) { this.bindDocumentFragments(t, i); } } else { i = this._createViewElement(t, e); if (e.bind) { this.bindElements(t, i); } const o = t.attributes; if (o) { for (let t = o.length, e = 0; e < t; e++) { i._setAttribute(o[e].name, o[e].value); } } if (this._isViewElementWithRawContent(i, e)) { i._setCustomProperty("$rawContent", t.innerHTML); if (!this._isBlockViewElement(i)) { n.push(i); } return i; } if (Cc(t)) { i._setCustomProperty("$rawContent", t.data); return i; } } yield i; const o = []; if (e.withChildren !== false) { for (const n of this.domChildrenToView(t, e, o)) { i._appendChild(n); } } if (this._isInlineObjectElement(i)) { n.push(i); } else { for (const t of o) { n.push(t); } } } } _processDomInlineNodes(t, e, n) { if (!e.length) { return; } if (t && !this.isDocumentFragment(t) && !this._isBlockDomElement(t)) { return; } let i = false; for (let t = 0; t < e.length; t++) { const o = e[t]; if (!o.is("$text")) { i = false; continue; } let r; let s = false; if (Ag(o, this.preElements)) { r = Zm(o.data); } else { r = o.data.replace(/[ \n\t\r]{1,}/g, " "); s = /[^\S\u00A0]/.test(r.charAt(r.length - 1)); const a = t > 0 ? e[t - 1] : null; const c = t + 1 < e.length ? e[t + 1] : null; const l = !a || (a.is("element") && a.name == "br") || i; const d = c ? false : !Ym(o.data); if (n.withChildren !== false) { if (l) { r = r.replace(/^ /, ""); } if (d) { r = r.replace(/ $/, ""); } } r = Zm(r); r = r.replace(/ \u00A0/g, " "); const u = c && c.is("element") && c.name != "br"; const h = c && c.is("$text") && c.data.charAt(0) == " "; if (/[ \u00A0]\u00A0$/.test(r) || !c || u || h) { r = r.replace(/\u00A0$/, " "); } if (l || (a && a.is("element") && a.name != "br")) { r = r.replace(/^\u00A0/, " "); } } if (r.length == 0 && o.parent) { o._remove(); e.splice(t, 1); t--; } else { o._data = r; i = s; } } e.length = 0; } _processDataFromViewText(t) { let e = t.data; if (t.getAncestors().some((t) => this.preElements.includes(t.name))) { return e; } if (e.charAt(0) == " ") { const n = this._getTouchingInlineViewNode(t, false); const i = n && n.is("$textProxy") && this._nodeEndsWithSpace(n); if (i || !n) { e = " " + e.substr(1); } } if (e.charAt(e.length - 1) == " ") { const n = this._getTouchingInlineViewNode(t, true); const i = n && n.is("$textProxy") && n.data.charAt(0) == " "; if (e.charAt(e.length - 2) == " " || !n || i) { e = e.substr(0, e.length - 1) + " "; } } return e.replace(/ {2}/g, "  "); } _nodeEndsWithSpace(t) { if (t.getAncestors().some((t) => this.preElements.includes(t.name))) { return false; } const e = this._processDataFromViewText(t); return e.charAt(e.length - 1) == " "; } _getTouchingInlineViewNode(t, e) { const n = new nm({ startPosition: e ? im._createAfter(t) : im._createBefore(t), direction: e ? "forward" : "backward", }); for (const t of n) { if (t.item.is("element", "br")) { return null; } else if (this._isInlineObjectElement(t.item)) { return t.item; } else if (t.item.is("containerElement")) { return null; } else if (t.item.is("$textProxy")) { return t.item; } } return null; } _isBlockDomElement(t) { return ( this.isElement(t) && this.blockElements.includes(t.tagName.toLowerCase()) ); } _isBlockViewElement(t) { return t.is("element") && this.blockElements.includes(t.name); } _isInlineObjectElement(t) { if (!t.is("element")) { return false; } return ( t.name == "br" || this.inlineObjectElements.includes(t.name) || !!this._inlineObjectElementMatcher.match(t) ); } _createViewElement(t, e) { if (Cc(t)) { return new ym(this.document, "$comment"); } const n = e.keepOriginalCase ? t.tagName : t.tagName.toLowerCase(); return new Gh(this.document, n); } _isViewElementWithRawContent(t, e) { return ( e.withChildren !== false && t.is("element") && !!this._rawContentElementMatcher.match(t) ); } _shouldRenameElement(t) { const e = t.toLowerCase(); return ( this.renderingMode === "editing" && this.unsafeElements.includes(e) ); } _createReplacementDomElement(t, e) { const n = this._domDocument.createElement("span"); n.setAttribute(bg, t); if (e) { while (e.firstChild) { n.appendChild(e.firstChild); } for (const t of e.getAttributeNames()) { n.setAttribute(t, e.getAttribute(t)); } } return n; } } function Ag(t, e) { return t .getAncestors() .some((t) => t.is("element") && e.includes(t.name)); } function _g(t, e) { let n = t; while (n) { e(n); n = n.parentElement; } } function Cg(t, e) { const n = t.isEqualNode(fg); return n && vg(t, e) && t.parentNode.childNodes.length === 1; } function vg(t, e) { const n = t.parentNode; return !!n && !!n.tagName && e.includes(n.tagName.toLowerCase()); } function yg(t) { if (t === "script") { z("domconverter-unsafe-script-element-detected"); } if (t === "style") { z("domconverter-unsafe-style-element-detected"); } } function xg(t) { if (!a.isGecko) { return false; } if (!t.rangeCount) { return false; } const e = t.getRangeAt(0).startContainer; try { Object.prototype.toString.call(e); } catch (t) { return true; } return false; } class Eg extends Za() { constructor(t) { super(); this._isEnabled = false; this.view = t; this.document = t.document; } get isEnabled() { return this._isEnabled; } enable() { this._isEnabled = true; } disable() { this._isEnabled = false; } destroy() { this.disable(); this.stopListening(); } checkShouldIgnoreEventFromTarget(t) { if (t && t.nodeType === 3) { t = t.parentNode; } if (!t || t.nodeType !== 1) { return false; } return t.matches( "[data-cke-ignore-events], [data-cke-ignore-events] *" ); } } var Dg = ql(function (t, e) { ki(e, er(e), t); }); const Sg = Dg; class Tg { constructor(t, e, n) { this.view = t; this.document = t.document; this.domEvent = e; this.domTarget = e.target; Sg(this, n); } get target() { return this.view.domConverter.mapDomToView(this.domTarget); } preventDefault() { this.domEvent.preventDefault(); } stopPropagation() { this.domEvent.stopPropagation(); } } class Bg extends Eg { constructor() { super(...arguments); this.useCapture = false; } observe(t) { const e = typeof this.domEventType == "string" ? [this.domEventType] : this.domEventType; e.forEach((e) => { this.listenTo( t, e, (t, e) => { if ( this.isEnabled && !this.checkShouldIgnoreEventFromTarget(e.target) ) { this.onDomEvent(e); } }, { useCapture: this.useCapture } ); }); } stopObserving(t) { this.stopListening(t); } fire(t, e, n) { if (this.isEnabled) { this.document.fire(t, new Tg(this.view, e, n)); } } } class Mg extends Bg { constructor() { super(...arguments); this.domEventType = ["keydown", "keyup"]; } onDomEvent(t) { const e = { keyCode: t.keyCode, altKey: t.altKey, ctrlKey: t.ctrlKey, shiftKey: t.shiftKey, metaKey: t.metaKey, get keystroke() { return Kc(this); }, }; this.fire(t.type, t, e); } } var Ig = function () { return It.Date.now(); }; const Lg = Ig; var Ng = /\s/; function zg(t) { var e = t.length; while (e-- && Ng.test(t.charAt(e))) {} return e; } const Pg = zg; var Rg = /^\s+/; function Vg(t) { return t ? t.slice(0, Pg(t) + 1).replace(Rg, "") : t; } const Og = Vg; var Fg = 0 / 0; var jg = /^[-+]0x[0-9a-f]+$/i; var Hg = /^0b[01]+$/i; var Ug = /^0o[0-7]+$/i; var $g = parseInt; function qg(t) { if (typeof t == "number") { return t; } if (Yu(t)) { return Fg; } if (st(t)) { var e = typeof t.valueOf == "function" ? t.valueOf() : t; t = st(e) ? e + "" : e; } if (typeof t != "string") { return t === 0 ? t : +t; } t = Og(t); var n = Hg.test(t); return n || Ug.test(t) ? $g(t.slice(2), n ? 2 : 8) : jg.test(t) ? Fg : +t; } const Wg = qg; var Gg = "Expected a function"; var Kg = Math.max, Yg = Math.min; function Qg(t, e, n) { var i, o, r, s, a, c, l = 0, d = false, u = false, h = true; if (typeof t != "function") { throw new TypeError(Gg); } e = Wg(e) || 0; if (st(n)) { d = !!n.leading; u = "maxWait" in n; r = u ? Kg(Wg(n.maxWait) || 0, e) : r; h = "trailing" in n ? !!n.trailing : h; } function m(e) { var n = i, r = o; i = o = undefined; l = e; s = t.apply(r, n); return s; } function g(t) { l = t; a = setTimeout(k, e); return d ? m(t) : s; } function f(t) { var n = t - c, i = t - l, o = e - n; return u ? Yg(o, r - i) : o; } function p(t) { var n = t - c, i = t - l; return c === undefined || n >= e || n < 0 || (u && i >= r); } function k() { var t = Lg(); if (p(t)) { return b(t); } a = setTimeout(k, f(t)); } function b(t) { a = undefined; if (h && i) { return m(t); } i = o = undefined; return s; } function w() { if (a !== undefined) { clearTimeout(a); } l = 0; i = c = o = a = undefined; } function A() { return a === undefined ? s : b(Lg()); } function _() { var t = Lg(), n = p(t); i = arguments; o = this; c = t; if (n) { if (a === undefined) { return g(c); } if (u) { clearTimeout(a); a = setTimeout(k, e); return m(c); } } if (a === undefined) { a = setTimeout(k, e); } return s; } _.cancel = w; _.flush = A; return _; } const Zg = Qg; class Jg extends Eg { constructor(t) { super(t); this._fireSelectionChangeDoneDebounced = Zg((t) => { this.document.fire("selectionChangeDone", t); }, 200); } observe() { const t = this.document; t.on( "arrowKey", (e, n) => { const i = t.selection; if (i.isFake && this.isEnabled) { n.preventDefault(); } }, { context: "$capture" } ); t.on( "arrowKey", (e, n) => { const i = t.selection; if (i.isFake && this.isEnabled) { this._handleSelectionMove(n.keyCode); } }, { priority: "lowest" } ); } stopObserving() {} destroy() { super.destroy(); this._fireSelectionChangeDoneDebounced.cancel(); } _handleSelectionMove(t) { const e = this.document.selection; const n = new sm(e.getRanges(), { backward: e.isBackward, fake: false, }); if (t == Wc.arrowleft || t == Wc.arrowup) { n.setTo(n.getFirstPosition()); } if (t == Wc.arrowright || t == Wc.arrowdown) { n.setTo(n.getLastPosition()); } const i = { oldSelection: e, newSelection: n, domSelection: null }; this.document.fire("selectionChange", i); this._fireSelectionChangeDoneDebounced(i); } } var Xg = "__lodash_hash_undefined__"; function tf(t) { this.__data__.set(t, Xg); return this; } const ef = tf; function nf(t) { return this.__data__.has(t); } const of = nf; function rf(t) { var e = -1, n = t == null ? 0 : t.length; this.__data__ = new ti(); while (++e < n) { this.add(t[e]); } } rf.prototype.add = rf.prototype.push = ef; rf.prototype.has = of; const sf = rf; function af(t, e) { var n = -1, i = t == null ? 0 : t.length; while (++n < i) { if (e(t[n], n, t)) { return true; } } return false; } const cf = af; function lf(t, e) { return t.has(e); } const df = lf; var uf = 1, hf = 2; function mf(t, e, n, i, o, r) { var s = n & uf, a = t.length, c = e.length; if (a != c && !(s && c > a)) { return false; } var l = r.get(t); var d = r.get(e); if (l && d) { return l == e && d == t; } var u = -1, h = true, m = n & hf ? new sf() : undefined; r.set(t, e); r.set(e, t); while (++u < a) { var g = t[u], f = e[u]; if (i) { var p = s ? i(f, g, u, e, t, r) : i(g, f, u, t, e, r); } if (p !== undefined) { if (p) { continue; } h = false; break; } if (m) { if ( !cf(e, function (t, e) { if (!df(m, e) && (g === t || o(g, t, n, i, r))) { return m.push(e); } }) ) { h = false; break; } } else if (!(g === f || o(g, f, n, i, r))) { h = false; break; } } r["delete"](t); r["delete"](e); return h; } const gf = mf; function ff(t) { var e = -1, n = Array(t.size); t.forEach(function (t, i) { n[++e] = [i, t]; }); return n; } const pf = ff; function kf(t) { var e = -1, n = Array(t.size); t.forEach(function (t) { n[++e] = t; }); return n; } const bf = kf; var wf = 1, Af = 2; var _f = "[object Boolean]", Cf = "[object Date]", vf = "[object Error]", yf = "[object Map]", xf = "[object Number]", Ef = "[object RegExp]", Df = "[object Set]", Sf = "[object String]", Tf = "[object Symbol]"; var Bf = "[object ArrayBuffer]", Mf = "[object DataView]"; var If = Nt ? Nt.prototype : undefined, Lf = If ? If.valueOf : undefined; function Nf(t, e, n, i, o, r, s) { switch (n) { case Mf: if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) { return false; } t = t.buffer; e = e.buffer; case Bf: if (t.byteLength != e.byteLength || !r(new ls(t), new ls(e))) { return false; } return true; case _f: case Cf: case xf: return we(+t, +e); case vf: return t.name == e.name && t.message == e.message; case Ef: case Sf: return t == e + ""; case yf: var a = pf; case Df: var c = i & wf; a || (a = bf); if (t.size != e.size && !c) { return false; } var l = s.get(t); if (l) { return l == e; } i |= Af; s.set(t, e); var d = gf(a(t), a(e), i, o, r, s); s["delete"](t); return d; case Tf: if (Lf) { return Lf.call(t) == Lf.call(e); } } return false; } const zf = Nf; var Pf = 1; var Rf = Object.prototype; var Vf = Rf.hasOwnProperty; function Of(t, e, n, i, o, r) { var s = n & Pf, a = Nr(t), c = a.length, l = Nr(e), d = l.length; if (c != d && !s) { return false; } var u = c; while (u--) { var h = a[u]; if (!(s ? h in e : Vf.call(e, h))) { return false; } } var m = r.get(t); var g = r.get(e); if (m && g) { return m == e && g == t; } var f = true; r.set(t, e); r.set(e, t); var p = s; while (++u < c) { h = a[u]; var k = t[h], b = e[h]; if (i) { var w = s ? i(b, k, h, e, t, r) : i(k, b, h, t, e, r); } if (!(w === undefined ? k === b || o(k, b, n, i, r) : w)) { f = false; break; } p || (p = h == "constructor"); } if (f && !p) { var A = t.constructor, _ = e.constructor; if ( A != _ && "constructor" in t && "constructor" in e && !( typeof A == "function" && A instanceof A && typeof _ == "function" && _ instanceof _ ) ) { f = false; } } r["delete"](t); r["delete"](e); return f; } const Ff = Of; var jf = 1; var Hf = "[object Arguments]", Uf = "[object Array]", $f = "[object Object]"; var qf = Object.prototype; var Wf = qf.hasOwnProperty; function Gf(t, e, n, i, o, r) { var s = Zt(t), a = Zt(e), c = s ? Uf : is(t), l = a ? Uf : is(e); c = c == Hf ? $f : c; l = l == Hf ? $f : l; var d = c == $f, u = l == $f, h = c == l; if (h && Pi(t)) { if (!Pi(e)) { return false; } s = true; d = false; } if (h && !d) { r || (r = new ri()); return s || So(t) ? gf(t, e, n, i, o, r) : zf(t, e, c, n, i, o, r); } if (!(n & jf)) { var m = d && Wf.call(t, "__wrapped__"), g = u && Wf.call(e, "__wrapped__"); if (m || g) { var f = m ? t.value() : t, p = g ? e.value() : e; r || (r = new ri()); return o(f, p, n, i, r); } } if (!h) { return false; } r || (r = new ri()); return Ff(t, e, n, i, o, r); } const Kf = Gf; function Yf(t, e, n, i, o) { if (t === e) { return true; } if (t == null || e == null || (!Xt(t) && !Xt(e))) { return t !== t && e !== e; } return Kf(t, e, n, i, Yf, o); } const Qf = Yf; function Zf(t, e, n) { n = typeof n == "function" ? n : undefined; var i = n ? n(t, e) : undefined; return i === undefined ? Qf(t, e, undefined, n) : !!i; } const Jf = Zf; class Xf extends Eg { constructor(t) { super(t); this._config = { childList: true, characterData: true, subtree: true, }; this.domConverter = t.domConverter; this.renderer = t._renderer; this._domElements = new Set(); this._mutationObserver = new window.MutationObserver( this._onMutations.bind(this) ); } flush() { this._onMutations(this._mutationObserver.takeRecords()); } observe(t) { this._domElements.add(t); if (this.isEnabled) { this._mutationObserver.observe(t, this._config); } } stopObserving(t) { this._domElements.delete(t); if (this.isEnabled) { this._mutationObserver.disconnect(); for (const t of this._domElements) { this._mutationObserver.observe(t, this._config); } } } enable() { super.enable(); for (const t of this._domElements) { this._mutationObserver.observe(t, this._config); } } disable() { super.disable(); this._mutationObserver.disconnect(); } destroy() { super.destroy(); this._mutationObserver.disconnect(); } _onMutations(t) { if (t.length === 0) { return; } const e = this.domConverter; const n = new Set(); const i = new Set(); for (const n of t) { const t = e.mapDomToView(n.target); if (!t) { continue; } if (t.is("uiElement") || t.is("rawElement")) { continue; } if (n.type === "childList" && !this._isBogusBrMutation(n)) { i.add(t); } } for (const o of t) { const t = e.mapDomToView(o.target); if (t && (t.is("uiElement") || t.is("rawElement"))) { continue; } if (o.type === "characterData") { const t = e.findCorrespondingViewText(o.target); if (t && !i.has(t.parent)) { n.add(t); } else if (!t && Ym(o.target)) { i.add(e.mapDomToView(o.target.parentNode)); } } } let o = false; for (const t of n) { o = true; this.renderer.markToSync("text", t); } for (const t of i) { const n = e.mapViewToDom(t); const i = Array.from(t.getChildren()); const r = Array.from( e.domChildrenToView(n, { withChildren: false }) ); if (!Jf(i, r, tp)) { o = true; this.renderer.markToSync("children", t); } } if (o) { this.view.forceRender(); } } _isBogusBrMutation(t) { let e = null; if ( t.nextSibling === null && t.removedNodes.length === 0 && t.addedNodes.length == 1 ) { e = this.domConverter.domToView(t.addedNodes[0], { withChildren: false, }); } return e && e.is("element", "br"); } } function tp(t, e) { if (Array.isArray(t)) { return; } if (t === e) { return true; } else if (t.is("$text") && e.is("$text")) { return t.data === e.data; } return false; } class ep extends Bg { constructor(t) { super(t); this._isFocusChanging = false; this.domEventType = ["focus", "blur"]; this.useCapture = true; const e = this.document; e.on("focus", () => { this._isFocusChanging = true; this._renderTimeoutId = setTimeout(() => { this.flush(); t.change(() => {}); }, 50); }); e.on("blur", (n, i) => { const o = e.selection.editableElement; if (o === null || o === i.target) { e.isFocused = false; this._isFocusChanging = false; t.change(() => {}); } }); } flush() { if (this._isFocusChanging) { this._isFocusChanging = false; this.document.isFocused = true; } } onDomEvent(t) { this.fire(t.type, t); } destroy() { if (this._renderTimeoutId) { clearTimeout(this._renderTimeoutId); } super.destroy(); } } class np extends Eg { constructor(t) { super(t); this.mutationObserver = t.getObserver(Xf); this.focusObserver = t.getObserver(ep); this.selection = this.document.selection; this.domConverter = t.domConverter; this._documents = new WeakSet(); this._fireSelectionChangeDoneDebounced = Zg((t) => { this.document.fire("selectionChangeDone", t); }, 200); this._clearInfiniteLoopInterval = setInterval( () => this._clearInfiniteLoop(), 1e3 ); this._documentIsSelectingInactivityTimeoutDebounced = Zg( () => (this.document.isSelecting = false), 5e3 ); this._loopbackCounter = 0; } observe(t) { const e = t.ownerDocument; const n = () => { this.document.isSelecting = true; this._documentIsSelectingInactivityTimeoutDebounced(); }; const i = () => { if (!this.document.isSelecting) { return; } this._handleSelectionChange(null, e); this.document.isSelecting = false; this._documentIsSelectingInactivityTimeoutDebounced.cancel(); }; this.listenTo(t, "selectstart", n, { priority: "highest" }); this.listenTo(t, "keydown", i, { priority: "highest", useCapture: true, }); this.listenTo(t, "keyup", i, { priority: "highest", useCapture: true, }); if (this._documents.has(e)) { return; } this.listenTo(e, "mouseup", i, { priority: "highest", useCapture: true, }); this.listenTo(e, "selectionchange", (t, n) => { if (this.document.isComposing && !a.isAndroid) { return; } this._handleSelectionChange(n, e); this._documentIsSelectingInactivityTimeoutDebounced(); }); this._documents.add(e); } stopObserving(t) { this.stopListening(t); } destroy() { super.destroy(); clearInterval(this._clearInfiniteLoopInterval); this._fireSelectionChangeDoneDebounced.cancel(); this._documentIsSelectingInactivityTimeoutDebounced.cancel(); } _reportInfiniteLoop() {} _handleSelectionChange(t, e) { if (!this.isEnabled) { return; } const n = e.defaultView.getSelection(); if (this.checkShouldIgnoreEventFromTarget(n.anchorNode)) { return; } this.mutationObserver.flush(); const i = this.domConverter.domSelectionToView(n); if (i.rangeCount == 0) { this.view.hasDomSelection = false; return; } this.view.hasDomSelection = true; this.focusObserver.flush(); if ( this.selection.isEqual(i) && this.domConverter.isDomSelectionCorrect(n) ) { return; } if (++this._loopbackCounter > 60) { this._reportInfiniteLoop(); return; } if (this.selection.isSimilar(i)) { this.view.forceRender(); } else { const t = { oldSelection: this.selection, newSelection: i, domSelection: n, }; this.document.fire("selectionChange", t); this._fireSelectionChangeDoneDebounced(t); } } _clearInfiniteLoop() { this._loopbackCounter = 0; } } class ip extends Bg { constructor(t) { super(t); this.domEventType = [ "compositionstart", "compositionupdate", "compositionend", ]; const e = this.document; e.on( "compositionstart", () => { e.isComposing = true; }, { priority: "low" } ); e.on( "compositionend", () => { e.isComposing = false; }, { priority: "low" } ); } onDomEvent(t) { this.fire(t.type, t, { data: t.data }); } } class op { constructor(t, e = {}) { this._files = e.cacheFiles ? rp(t) : null; this._native = t; } get files() { if (!this._files) { this._files = rp(this._native); } return this._files; } get types() { return this._native.types; } getData(t) { return this._native.getData(t); } setData(t, e) { this._native.setData(t, e); } set effectAllowed(t) { this._native.effectAllowed = t; } get effectAllowed() { return this._native.effectAllowed; } set dropEffect(t) { this._native.dropEffect = t; } get dropEffect() { return this._native.dropEffect; } setDragImage(t, e, n) { this._native.setDragImage(t, e, n); } get isCanceled() { return ( this._native.dropEffect == "none" || !!this._native.mozUserCancelled ); } } function rp(t) { const e = Array.from(t.files || []); const n = Array.from(t.items || []); if (e.length) { return e; } return n.filter((t) => t.kind === "file").map((t) => t.getAsFile()); } class sp extends Bg { constructor() { super(...arguments); this.domEventType = "beforeinput"; } onDomEvent(t) { const e = t.getTargetRanges(); const n = this.view; const i = n.document; let o = null; let r = null; let s = []; if (t.dataTransfer) { o = new op(t.dataTransfer); } if (t.data !== null) { r = t.data; } else if (o) { r = o.getData("text/plain"); } if (i.selection.isFake) { s = Array.from(i.selection.getRanges()); } else if (e.length) { s = e .map((t) => { const e = n.domConverter.domPositionToView( t.startContainer, t.startOffset ); const i = n.domConverter.domPositionToView( t.endContainer, t.endOffset ); if (e) { return n.createRange(e, i); } else if (i) { return n.createRange(i); } }) .filter((t) => !!t); } else if (a.isAndroid) { const e = t.target.ownerDocument.defaultView.getSelection(); s = Array.from(n.domConverter.domSelectionToView(e).getRanges()); } if ( a.isAndroid && t.inputType == "insertCompositionText" && r && r.endsWith("\n") ) { this.fire(t.type, t, { inputType: "insertParagraph", targetRanges: [n.createRange(s[0].end)], }); return; } if (t.inputType == "insertText" && r && r.includes("\n")) { const e = r.split(/\n{1,2}/g); let n = s; for (let r = 0; r < e.length; r++) { const s = e[r]; if (s != "") { this.fire(t.type, t, { data: s, dataTransfer: o, targetRanges: n, inputType: t.inputType, isComposing: t.isComposing, }); n = [i.selection.getFirstRange()]; } if (r + 1 < e.length) { this.fire(t.type, t, { inputType: "insertParagraph", targetRanges: n, }); n = [i.selection.getFirstRange()]; } } return; } this.fire(t.type, t, { data: r, dataTransfer: o, targetRanges: s, inputType: t.inputType, isComposing: t.isComposing, }); } } class ap extends Eg { constructor(t) { super(t); this.document.on("keydown", (t, e) => { if (this.isEnabled && Zc(e.keyCode)) { const n = new cm( this.document, "arrowKey", this.document.selection.getFirstRange() ); this.document.fire(n, e); if (n.stop.called) { t.stop(); } } }); } observe() {} stopObserving() {} } class cp extends Eg { constructor(t) { super(t); const e = this.document; e.on("keydown", (t, n) => { if (!this.isEnabled || n.keyCode != Wc.tab || n.ctrlKey) { return; } const i = new cm(e, "tab", e.selection.getFirstRange()); e.fire(i, n); if (i.stop.called) { t.stop(); } }); } observe() {} stopObserving() {} } var lp = 1, dp = 4; function up(t) { return Va(t, lp | dp); } const hp = up; class mp extends mt() { constructor(t) { super(); this.domRoots = new Map(); this._initialDomRootAttributes = new WeakMap(); this._observers = new Map(); this._ongoingChange = false; this._postFixersInProgress = false; this._renderingDisabled = false; this._hasChangedSinceTheLastRendering = false; this.document = new pm(t); this.domConverter = new wg(this.document); this.set("isRenderingInProgress", false); this.set("hasDomSelection", false); this._renderer = new og(this.domConverter, this.document.selection); this._renderer .bind("isFocused", "isSelecting", "isComposing") .to(this.document, "isFocused", "isSelecting", "isComposing"); this._writer = new Im(this.document); this.addObserver(Xf); this.addObserver(ep); this.addObserver(np); this.addObserver(Mg); this.addObserver(Jg); this.addObserver(ip); this.addObserver(ap); this.addObserver(sp); this.addObserver(cp); Jm(this); xm(this); this.on("render", () => { this._render(); this.document.fire("layoutChanged"); this._hasChangedSinceTheLastRendering = false; }); this.listenTo(this.document.selection, "change", () => { this._hasChangedSinceTheLastRendering = true; }); this.listenTo(this.document, "change:isFocused", () => { this._hasChangedSinceTheLastRendering = true; }); if (a.isiOS) { this.listenTo(this.document, "blur", (t, e) => { const n = this.domConverter.mapDomToView( e.domEvent.relatedTarget ); if (!n) { this.domConverter._clearDomSelection(); } }); } } attachDomRoot(t, e = "main") { const n = this.document.getRoot(e); n._name = t.tagName.toLowerCase(); const i = {}; for (const { name: e, value: o } of Array.from(t.attributes)) { i[e] = o; if (e === "class") { this._writer.addClass(o.split(" "), n); } else { this._writer.setAttribute(e, o, n); } } this._initialDomRootAttributes.set(t, i); const o = () => { this._writer.setAttribute( "contenteditable", (!n.isReadOnly).toString(), n ); if (n.isReadOnly) { this._writer.addClass("ck-read-only", n); } else { this._writer.removeClass("ck-read-only", n); } }; o(); this.domRoots.set(e, t); this.domConverter.bindElements(t, n); this._renderer.markToSync("children", n); this._renderer.markToSync("attributes", n); this._renderer.domDocuments.add(t.ownerDocument); n.on("change:children", (t, e) => this._renderer.markToSync("children", e) ); n.on("change:attributes", (t, e) => this._renderer.markToSync("attributes", e) ); n.on("change:text", (t, e) => this._renderer.markToSync("text", e)); n.on("change:isReadOnly", () => this.change(o)); n.on("change", () => { this._hasChangedSinceTheLastRendering = true; }); for (const n of this._observers.values()) { n.observe(t, e); } } detachDomRoot(t) { const e = this.domRoots.get(t); Array.from(e.attributes).forEach(({ name: t }) => e.removeAttribute(t) ); const n = this._initialDomRootAttributes.get(e); for (const t in n) { e.setAttribute(t, n[t]); } this.domRoots.delete(t); this.domConverter.unbindDomElement(e); for (const t of this._observers.values()) { t.stopObserving(e); } } getDomRoot(t = "main") { return this.domRoots.get(t); } addObserver(t) { let e = this._observers.get(t); if (e) { return e; } e = new t(this); this._observers.set(t, e); for (const [t, n] of this.domRoots) { e.observe(n, t); } e.enable(); return e; } getObserver(t) { return this._observers.get(t); } disableObservers() { for (const t of this._observers.values()) { t.disable(); } } enableObservers() { for (const t of this._observers.values()) { t.enable(); } } scrollToTheSelection({ alignToTop: t, forceScroll: e, viewportOffset: n = 20, ancestorOffset: i = 20, } = {}) { const o = this.document.selection.getFirstRange(); if (!o) { return; } const r = hp({ alignToTop: t, forceScroll: e, viewportOffset: n, ancestorOffset: i, }); if (typeof n === "number") { n = { top: n, bottom: n, left: n, right: n }; } const s = { target: this.domConverter.viewRangeToDom(o), viewportOffset: n, ancestorOffset: i, alignToTop: t, forceScroll: e, }; this.fire("scrollToTheSelection", s, r); Mc(s); } focus() { if (!this.document.isFocused) { const t = this.document.selection.editableElement; if (t) { this.domConverter.focus(t); this.forceRender(); } else { } } } change(t) { if (this.isRenderingInProgress || this._postFixersInProgress) { throw new N("cannot-change-view-tree", this); } try { if (this._ongoingChange) { return t(this._writer); } this._ongoingChange = true; const e = t(this._writer); this._ongoingChange = false; if ( !this._renderingDisabled && this._hasChangedSinceTheLastRendering ) { this._postFixersInProgress = true; this.document._callPostFixers(this._writer); this._postFixersInProgress = false; this.fire("render"); } return e; } catch (t) { N.rethrowUnexpectedError(t, this); } } forceRender() { this._hasChangedSinceTheLastRendering = true; this.getObserver(ep).flush(); this.change(() => {}); } destroy() { for (const t of this._observers.values()) { t.destroy(); } this.document.destroy(); this.stopListening(); } createPositionAt(t, e) { return im._createAt(t, e); } createPositionAfter(t) { return im._createAfter(t); } createPositionBefore(t) { return im._createBefore(t); } createRange(t, e) { return new om(t, e); } createRangeOn(t) { return om._createOn(t); } createRangeIn(t) { return om._createIn(t); } createSelection(...t) { return new sm(...t); } _disableRendering(t) { this._renderingDisabled = t; if (t == false) { this.change(() => {}); } } _render() { this.isRenderingInProgress = true; this.disableObservers(); this._renderer.render(); this.enableObservers(); this.isRenderingInProgress = false; } } class gp { is() { throw new Error("is() method is abstract"); } } class fp extends gp { constructor(t) { super(); this.parent = null; this._attrs = ad(t); } get document() { return null; } get index() { let t; if (!this.parent) { return null; } if ((t = this.parent.getChildIndex(this)) === null) { throw new N("model-node-not-found-in-parent", this); } return t; } get startOffset() { let t; if (!this.parent) { return null; } if ((t = this.parent.getChildStartOffset(this)) === null) { throw new N("model-node-not-found-in-parent", this); } return t; } get offsetSize() { return 1; } get endOffset() { if (!this.parent) { return null; } return this.startOffset + this.offsetSize; } get nextSibling() { const t = this.index; return (t !== null && this.parent.getChild(t + 1)) || null; } get previousSibling() { const t = this.index; return (t !== null && this.parent.getChild(t - 1)) || null; } get root() { let t = this; while (t.parent) { t = t.parent; } return t; } isAttached() { return this.parent === null ? false : this.root.isAttached(); } getPath() { const t = []; let e = this; while (e.parent) { t.unshift(e.startOffset); e = e.parent; } return t; } getAncestors(t = {}) { const e = []; let n = t.includeSelf ? this : this.parent; while (n) { e[t.parentFirst ? "push" : "unshift"](n); n = n.parent; } return e; } getCommonAncestor(t, e = {}) { const n = this.getAncestors(e); const i = t.getAncestors(e); let o = 0; while (n[o] == i[o] && n[o]) { o++; } return o === 0 ? null : n[o - 1]; } isBefore(t) { if (this == t) { return false; } if (this.root !== t.root) { return false; } const e = this.getPath(); const n = t.getPath(); const i = Et(e, n); switch (i) { case "prefix": return true; case "extension": return false; default: return e[i] < n[i]; } } isAfter(t) { if (this == t) { return false; } if (this.root !== t.root) { return false; } return !this.isBefore(t); } hasAttribute(t) { return this._attrs.has(t); } getAttribute(t) { return this._attrs.get(t); } getAttributes() { return this._attrs.entries(); } getAttributeKeys() { return this._attrs.keys(); } toJSON() { const t = {}; if (this._attrs.size) { t.attributes = Array.from(this._attrs).reduce((t, e) => { t[e[0]] = e[1]; return t; }, {}); } return t; } _clone(t) { return new this.constructor(this._attrs); } _remove() { this.parent._removeChildren(this.index); } _setAttribute(t, e) { this._attrs.set(t, e); } _setAttributesTo(t) { this._attrs = ad(t); } _removeAttribute(t) { return this._attrs.delete(t); } _clearAttributes() { this._attrs.clear(); } } fp.prototype.is = function (t) { return t === "node" || t === "model:node"; }; class pp { constructor(t) { this._nodes = []; if (t) { this._insertNodes(0, t); } } [Symbol.iterator]() { return this._nodes[Symbol.iterator](); } get length() { return this._nodes.length; } get maxOffset() { return this._nodes.reduce((t, e) => t + e.offsetSize, 0); } getNode(t) { return this._nodes[t] || null; } getNodeIndex(t) { const e = this._nodes.indexOf(t); return e == -1 ? null : e; } getNodeStartOffset(t) { const e = this.getNodeIndex(t); return e === null ? null : this._nodes.slice(0, e).reduce((t, e) => t + e.offsetSize, 0); } indexToOffset(t) { if (t == this._nodes.length) { return this.maxOffset; } const e = this._nodes[t]; if (!e) { throw new N("model-nodelist-index-out-of-bounds", this); } return this.getNodeStartOffset(e); } offsetToIndex(t) { let e = 0; for (const n of this._nodes) { if (t >= e && t < e + n.offsetSize) { return this.getNodeIndex(n); } e += n.offsetSize; } if (e != t) { throw new N("model-nodelist-offset-out-of-bounds", this, { offset: t, nodeList: this, }); } return this.length; } _insertNodes(t, e) { for (const t of e) { if (!(t instanceof fp)) { throw new N("model-nodelist-insertnodes-not-node", this); } } this._nodes = ld(this._nodes, Array.from(e), t, 0); } _removeNodes(t, e = 1) { return this._nodes.splice(t, e); } toJSON() { return this._nodes.map((t) => t.toJSON()); } } class kp extends fp { constructor(t, e) { super(e); this._data = t || ""; } get offsetSize() { return this.data.length; } get data() { return this._data; } toJSON() { const t = super.toJSON(); t.data = this.data; return t; } _clone() { return new kp(this.data, this.getAttributes()); } static fromJSON(t) { return new kp(t.data, t.attributes); } } kp.prototype.is = function (t) { return ( t === "$text" || t === "model:$text" || t === "text" || t === "model:text" || t === "node" || t === "model:node" ); }; class bp extends gp { constructor(t, e, n) { super(); this.textNode = t; if (e < 0 || e > t.offsetSize) { throw new N("model-textproxy-wrong-offsetintext", this); } if (n < 0 || e + n > t.offsetSize) { throw new N("model-textproxy-wrong-length", this); } this.data = t.data.substring(e, e + n); this.offsetInText = e; } get startOffset() { return this.textNode.startOffset !== null ? this.textNode.startOffset + this.offsetInText : null; } get offsetSize() { return this.data.length; } get endOffset() { return this.startOffset !== null ? this.startOffset + this.offsetSize : null; } get isPartial() { return this.offsetSize !== this.textNode.offsetSize; } get parent() { return this.textNode.parent; } get root() { return this.textNode.root; } getPath() { const t = this.textNode.getPath(); if (t.length > 0) { t[t.length - 1] += this.offsetInText; } return t; } getAncestors(t = {}) { const e = []; let n = t.includeSelf ? this : this.parent; while (n) { e[t.parentFirst ? "push" : "unshift"](n); n = n.parent; } return e; } hasAttribute(t) { return this.textNode.hasAttribute(t); } getAttribute(t) { return this.textNode.getAttribute(t); } getAttributes() { return this.textNode.getAttributes(); } getAttributeKeys() { return this.textNode.getAttributeKeys(); } } bp.prototype.is = function (t) { return ( t === "$textProxy" || t === "model:$textProxy" || t === "textProxy" || t === "model:textProxy" ); }; class wp extends fp { constructor(t, e, n) { super(e); this._children = new pp(); this.name = t; if (n) { this._insertChild(0, n); } } get childCount() { return this._children.length; } get maxOffset() { return this._children.maxOffset; } get isEmpty() { return this.childCount === 0; } getChild(t) { return this._children.getNode(t); } getChildren() { return this._children[Symbol.iterator](); } getChildIndex(t) { return this._children.getNodeIndex(t); } getChildStartOffset(t) { return this._children.getNodeStartOffset(t); } offsetToIndex(t) { return this._children.offsetToIndex(t); } getNodeByPath(t) { let e = this; for (const n of t) { e = e.getChild(e.offsetToIndex(n)); } return e; } findAncestor(t, e = {}) { let n = e.includeSelf ? this : this.parent; while (n) { if (n.name === t) { return n; } n = n.parent; } return null; } toJSON() { const t = super.toJSON(); t.name = this.name; if (this._children.length > 0) { t.children = []; for (const e of this._children) { t.children.push(e.toJSON()); } } return t; } _clone(t = false) { const e = t ? Array.from(this._children).map((t) => t._clone(true)) : undefined; return new wp(this.name, this.getAttributes(), e); } _appendChild(t) { this._insertChild(this.childCount, t); } _insertChild(t, e) { const n = Ap(e); for (const t of n) { if (t.parent !== null) { t._remove(); } t.parent = this; } this._children._insertNodes(t, n); } _removeChildren(t, e = 1) { const n = this._children._removeNodes(t, e); for (const t of n) { t.parent = null; } return n; } static fromJSON(t) { let e; if (t.children) { e = []; for (const n of t.children) { if (n.name) { e.push(wp.fromJSON(n)); } else { e.push(kp.fromJSON(n)); } } } return new wp(t.name, t.attributes, e); } } wp.prototype.is = function (t, e) { if (!e) { return ( t === "element" || t === "model:element" || t === "node" || t === "model:node" ); } return e === this.name && (t === "element" || t === "model:element"); }; function Ap(t) { if (typeof t == "string") { return [new kp(t)]; } if (!Dt(t)) { t = [t]; } return Array.from(t).map((t) => { if (typeof t == "string") { return new kp(t); } if (t instanceof bp) { return new kp(t.data, t.getAttributes()); } return t; }); } class _p { constructor(t) { if (!t || (!t.boundaries && !t.startPosition)) { throw new N("model-tree-walker-no-start-position", null); } const e = t.direction || "forward"; if (e != "forward" && e != "backward") { throw new N("model-tree-walker-unknown-direction", t, { direction: e, }); } this.direction = e; this.boundaries = t.boundaries || null; if (t.startPosition) { this._position = t.startPosition.clone(); } else { this._position = vp._createAt( this.boundaries[this.direction == "backward" ? "end" : "start"] ); } this.position.stickiness = "toNone"; this.singleCharacters = !!t.singleCharacters; this.shallow = !!t.shallow; this.ignoreElementEnd = !!t.ignoreElementEnd; this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null; this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null; this._visitedParent = this.position.parent; } [Symbol.iterator]() { return this; } get position() { return this._position; } skip(t) { let e, n, i, o; do { i = this.position; o = this._visitedParent; ({ done: e, value: n } = this.next()); } while (!e && t(n)); if (!e) { this._position = i; this._visitedParent = o; } } next() { if (this.direction == "forward") { return this._next(); } else { return this._previous(); } } _next() { const t = this.position; const e = this.position.clone(); const n = this._visitedParent; if (n.parent === null && e.offset === n.maxOffset) { return { done: true, value: undefined }; } if ( n === this._boundaryEndParent && e.offset == this.boundaries.end.offset ) { return { done: true, value: undefined }; } const i = yp(e, n); const o = i || xp(e, n, i); if (o instanceof wp) { if (!this.shallow) { e.path.push(0); this._visitedParent = o; } else { if (this.boundaries && this.boundaries.end.isBefore(e)) { return { done: true, value: undefined }; } e.offset++; } this._position = e; return Cp("elementStart", o, t, e, 1); } if (o instanceof kp) { let i; if (this.singleCharacters) { i = 1; } else { let t = o.endOffset; if ( this._boundaryEndParent == n && this.boundaries.end.offset < t ) { t = this.boundaries.end.offset; } i = t - e.offset; } const r = e.offset - o.startOffset; const s = new bp(o, r, i); e.offset += i; this._position = e; return Cp("text", s, t, e, i); } e.path.pop(); e.offset++; this._position = e; this._visitedParent = n.parent; if (this.ignoreElementEnd) { return this._next(); } return Cp("elementEnd", n, t, e); } _previous() { const t = this.position; const e = this.position.clone(); const n = this._visitedParent; if (n.parent === null && e.offset === 0) { return { done: true, value: undefined }; } if ( n == this._boundaryStartParent && e.offset == this.boundaries.start.offset ) { return { done: true, value: undefined }; } const i = e.parent; const o = yp(e, i); const r = o || Ep(e, i, o); if (r instanceof wp) { e.offset--; if (this.shallow) { this._position = e; return Cp("elementStart", r, t, e, 1); } e.path.push(r.maxOffset); this._position = e; this._visitedParent = r; if (this.ignoreElementEnd) { return this._previous(); } return Cp("elementEnd", r, t, e); } if (r instanceof kp) { let i; if (this.singleCharacters) { i = 1; } else { let t = r.startOffset; if ( this._boundaryStartParent == n && this.boundaries.start.offset > t ) { t = this.boundaries.start.offset; } i = e.offset - t; } const o = e.offset - r.startOffset; const s = new bp(r, o - i, i); e.offset -= i; this._position = e; return Cp("text", s, t, e, i); } e.path.pop(); this._position = e; this._visitedParent = n.parent; return Cp("elementStart", n, t, e, 1); } } function Cp(t, e, n, i, o) { return { done: false, value: { type: t, item: e, previousPosition: n, nextPosition: i, length: o, }, }; } class vp extends gp { constructor(t, e, n = "toNone") { super(); if (!t.is("element") && !t.is("documentFragment")) { throw new N("model-position-root-invalid", t); } if (!(e instanceof Array) || e.length === 0) { throw new N("model-position-path-incorrect-format", t, { path: e }); } if (t.is("rootElement")) { e = e.slice(); } else { e = [...t.getPath(), ...e]; t = t.root; } this.root = t; this.path = e; this.stickiness = n; } get offset() { return this.path[this.path.length - 1]; } set offset(t) { this.path[this.path.length - 1] = t; } get parent() { let t = this.root; for (let e = 0; e < this.path.length - 1; e++) { t = t.getChild(t.offsetToIndex(this.path[e])); if (!t) { throw new N("model-position-path-incorrect", this, { position: this, }); } } if (t.is("$text")) { throw new N("model-position-path-incorrect", this, { position: this, }); } return t; } get index() { return this.parent.offsetToIndex(this.offset); } get textNode() { return yp(this, this.parent); } get nodeAfter() { const t = this.parent; return xp(this, t, yp(this, t)); } get nodeBefore() { const t = this.parent; return Ep(this, t, yp(this, t)); } get isAtStart() { return this.offset === 0; } get isAtEnd() { return this.offset == this.parent.maxOffset; } compareWith(t) { if (this.root != t.root) { return "different"; } const e = Et(this.path, t.path); switch (e) { case "same": return "same"; case "prefix": return "before"; case "extension": return "after"; default: return this.path[e] < t.path[e] ? "before" : "after"; } } getLastMatchingPosition(t, e = {}) { e.startPosition = this; const n = new _p(e); n.skip(t); return n.position; } getParentPath() { return this.path.slice(0, -1); } getAncestors() { const t = this.parent; if (t.is("documentFragment")) { return [t]; } else { return t.getAncestors({ includeSelf: true }); } } findAncestor(t) { const e = this.parent; if (e.is("element")) { return e.findAncestor(t, { includeSelf: true }); } return null; } getCommonPath(t) { if (this.root != t.root) { return []; } const e = Et(this.path, t.path); const n = typeof e == "string" ? Math.min(this.path.length, t.path.length) : e; return this.path.slice(0, n); } getCommonAncestor(t) { const e = this.getAncestors(); const n = t.getAncestors(); let i = 0; while (e[i] == n[i] && e[i]) { i++; } return i === 0 ? null : e[i - 1]; } getShiftedBy(t) { const e = this.clone(); const n = e.offset + t; e.offset = n < 0 ? 0 : n; return e; } isAfter(t) { return this.compareWith(t) == "after"; } isBefore(t) { return this.compareWith(t) == "before"; } isEqual(t) { return this.compareWith(t) == "same"; } isTouching(t) { if (this.root !== t.root) { return false; } const e = Math.min(this.path.length, t.path.length); for (let n = 0; n < e; n++) { const e = this.path[n] - t.path[n]; if (e < -1 || e > 1) { return false; } else if (e === 1) { return Dp(t, this, n); } else if (e === -1) { return Dp(this, t, n); } } if (this.path.length === t.path.length) { return true; } else if (this.path.length > t.path.length) { return Sp(this.path, e); } else { return Sp(t.path, e); } } hasSameParentAs(t) { if (this.root !== t.root) { return false; } const e = this.getParentPath(); const n = t.getParentPath(); return Et(e, n) == "same"; } getTransformedByOperation(t) { let e; switch (t.type) { case "insert": e = this._getTransformedByInsertOperation(t); break; case "move": case "remove": case "reinsert": e = this._getTransformedByMoveOperation(t); break; case "split": e = this._getTransformedBySplitOperation(t); break; case "merge": e = this._getTransformedByMergeOperation(t); break; default: e = vp._createAt(this); break; } return e; } _getTransformedByInsertOperation(t) { return this._getTransformedByInsertion(t.position, t.howMany); } _getTransformedByMoveOperation(t) { return this._getTransformedByMove( t.sourcePosition, t.targetPosition, t.howMany ); } _getTransformedBySplitOperation(t) { const e = t.movedRange; const n = e.containsPosition(this) || (e.start.isEqual(this) && this.stickiness == "toNext"); if (n) { return this._getCombined(t.splitPosition, t.moveTargetPosition); } else { if (t.graveyardPosition) { return this._getTransformedByMove( t.graveyardPosition, t.insertionPosition, 1 ); } else { return this._getTransformedByInsertion(t.insertionPosition, 1); } } } _getTransformedByMergeOperation(t) { const e = t.movedRange; const n = e.containsPosition(this) || e.start.isEqual(this); let i; if (n) { i = this._getCombined(t.sourcePosition, t.targetPosition); if (t.sourcePosition.isBefore(t.targetPosition)) { i = i._getTransformedByDeletion(t.deletionPosition, 1); } } else if (this.isEqual(t.deletionPosition)) { i = vp._createAt(t.deletionPosition); } else { i = this._getTransformedByMove( t.deletionPosition, t.graveyardPosition, 1 ); } return i; } _getTransformedByDeletion(t, e) { const n = vp._createAt(this); if (this.root != t.root) { return n; } if (Et(t.getParentPath(), this.getParentPath()) == "same") { if (t.offset < this.offset) { if (t.offset + e > this.offset) { return null; } else { n.offset -= e; } } } else if (Et(t.getParentPath(), this.getParentPath()) == "prefix") { const i = t.path.length - 1; if (t.offset <= this.path[i]) { if (t.offset + e > this.path[i]) { return null; } else { n.path[i] -= e; } } } return n; } _getTransformedByInsertion(t, e) { const n = vp._createAt(this); if (this.root != t.root) { return n; } if (Et(t.getParentPath(), this.getParentPath()) == "same") { if ( t.offset < this.offset || (t.offset == this.offset && this.stickiness != "toPrevious") ) { n.offset += e; } } else if (Et(t.getParentPath(), this.getParentPath()) == "prefix") { const i = t.path.length - 1; if (t.offset <= this.path[i]) { n.path[i] += e; } } return n; } _getTransformedByMove(t, e, n) { e = e._getTransformedByDeletion(t, n); if (t.isEqual(e)) { return vp._createAt(this); } const i = this._getTransformedByDeletion(t, n); const o = i === null || (t.isEqual(this) && this.stickiness == "toNext") || (t.getShiftedBy(n).isEqual(this) && this.stickiness == "toPrevious"); if (o) { return this._getCombined(t, e); } else { return i._getTransformedByInsertion(e, n); } } _getCombined(t, e) { const n = t.path.length - 1; const i = vp._createAt(e); i.stickiness = this.stickiness; i.offset = i.offset + this.path[n] - t.offset; i.path = [...i.path, ...this.path.slice(n + 1)]; return i; } toJSON() { return { root: this.root.toJSON(), path: Array.from(this.path), stickiness: this.stickiness, }; } clone() { return new this.constructor(this.root, this.path, this.stickiness); } static _createAt(t, e, n = "toNone") { if (t instanceof vp) { return new vp(t.root, t.path, t.stickiness); } else { const i = t; if (e == "end") { e = i.maxOffset; } else if (e == "before") { return this._createBefore(i, n); } else if (e == "after") { return this._createAfter(i, n); } else if (e !== 0 && !e) { throw new N("model-createpositionat-offset-required", [this, t]); } if (!i.is("element") && !i.is("documentFragment")) { throw new N("model-position-parent-incorrect", [this, t]); } const o = i.getPath(); o.push(e); return new this(i.root, o, n); } } static _createAfter(t, e) { if (!t.parent) { throw new N("model-position-after-root", [this, t], { root: t }); } return this._createAt(t.parent, t.endOffset, e); } static _createBefore(t, e) { if (!t.parent) { throw new N("model-position-before-root", t, { root: t }); } return this._createAt(t.parent, t.startOffset, e); } static fromJSON(t, e) { if (t.root === "$graveyard") { const n = new vp(e.graveyard, t.path); n.stickiness = t.stickiness; return n; } if (!e.getRoot(t.root)) { throw new N("model-position-fromjson-no-root", e, { rootName: t.root, }); } return new vp(e.getRoot(t.root), t.path, t.stickiness); } } vp.prototype.is = function (t) { return t === "position" || t === "model:position"; }; function yp(t, e) { const n = e.getChild(e.offsetToIndex(t.offset)); if (n && n.is("$text") && n.startOffset < t.offset) { return n; } return null; } function xp(t, e, n) { if (n !== null) { return null; } return e.getChild(e.offsetToIndex(t.offset)); } function Ep(t, e, n) { if (n !== null) { return null; } return e.getChild(e.offsetToIndex(t.offset) - 1); } function Dp(t, e, n) { if (n + 1 === t.path.length) { return false; } if (!Sp(e.path, n + 1)) { return false; } if (!Tp(t, n + 1)) { return false; } return true; } function Sp(t, e) { while (e < t.length) { if (t[e] !== 0) { return false; } e++; } return true; } function Tp(t, e) { let n = t.parent; let i = t.path.length - 1; let o = 0; while (i >= e) { if (t.path[i] + o !== n.maxOffset) { return false; } o = 1; i--; n = n.parent; } return true; } class Bp extends gp { constructor(t, e) { super(); this.start = vp._createAt(t); this.end = e ? vp._createAt(e) : vp._createAt(t); this.start.stickiness = this.isCollapsed ? "toNone" : "toNext"; this.end.stickiness = this.isCollapsed ? "toNone" : "toPrevious"; } *[Symbol.iterator]() { yield* new _p({ boundaries: this, ignoreElementEnd: true }); } get isCollapsed() { return this.start.isEqual(this.end); } get isFlat() { const t = this.start.getParentPath(); const e = this.end.getParentPath(); return Et(t, e) == "same"; } get root() { return this.start.root; } containsPosition(t) { return t.isAfter(this.start) && t.isBefore(this.end); } containsRange(t, e = false) { if (t.isCollapsed) { e = false; } const n = this.containsPosition(t.start) || (e && this.start.isEqual(t.start)); const i = this.containsPosition(t.end) || (e && this.end.isEqual(t.end)); return n && i; } containsItem(t) { const e = vp._createBefore(t); return this.containsPosition(e) || this.start.isEqual(e); } isEqual(t) { return this.start.isEqual(t.start) && this.end.isEqual(t.end); } isIntersecting(t) { return this.start.isBefore(t.end) && this.end.isAfter(t.start); } getDifference(t) { const e = []; if (this.isIntersecting(t)) { if (this.containsPosition(t.start)) { e.push(new Bp(this.start, t.start)); } if (this.containsPosition(t.end)) { e.push(new Bp(t.end, this.end)); } } else { e.push(new Bp(this.start, this.end)); } return e; } getIntersection(t) { if (this.isIntersecting(t)) { let e = this.start; let n = this.end; if (this.containsPosition(t.start)) { e = t.start; } if (this.containsPosition(t.end)) { n = t.end; } return new Bp(e, n); } return null; } getJoined(t, e = false) { let n = this.isIntersecting(t); if (!n) { if (this.start.isBefore(t.start)) { n = e ? this.end.isTouching(t.start) : this.end.isEqual(t.start); } else { n = e ? t.end.isTouching(this.start) : t.end.isEqual(this.start); } } if (!n) { return null; } let i = this.start; let o = this.end; if (t.start.isBefore(i)) { i = t.start; } if (t.end.isAfter(o)) { o = t.end; } return new Bp(i, o); } getMinimalFlatRanges() { const t = []; const e = this.start.getCommonPath(this.end).length; const n = vp._createAt(this.start); let i = n.parent; while (n.path.length > e + 1) { const e = i.maxOffset - n.offset; if (e !== 0) { t.push(new Bp(n, n.getShiftedBy(e))); } n.path = n.path.slice(0, -1); n.offset++; i = i.parent; } while (n.path.length <= this.end.path.length) { const e = this.end.path[n.path.length - 1]; const i = e - n.offset; if (i !== 0) { t.push(new Bp(n, n.getShiftedBy(i))); } n.offset = e; n.path.push(0); } return t; } getWalker(t = {}) { t.boundaries = this; return new _p(t); } *getItems(t = {}) { t.boundaries = this; t.ignoreElementEnd = true; const e = new _p(t); for (const t of e) { yield t.item; } } *getPositions(t = {}) { t.boundaries = this; const e = new _p(t); yield e.position; for (const t of e) { yield t.nextPosition; } } getTransformedByOperation(t) { switch (t.type) { case "insert": return this._getTransformedByInsertOperation(t); case "move": case "remove": case "reinsert": return this._getTransformedByMoveOperation(t); case "split": return [this._getTransformedBySplitOperation(t)]; case "merge": return [this._getTransformedByMergeOperation(t)]; } return [new Bp(this.start, this.end)]; } getTransformedByOperations(t) { const e = [new Bp(this.start, this.end)]; for (const n of t) { for (let t = 0; t < e.length; t++) { const i = e[t].getTransformedByOperation(n); e.splice(t, 1, ...i); t += i.length - 1; } } for (let t = 0; t < e.length; t++) { const n = e[t]; for (let i = t + 1; i < e.length; i++) { const t = e[i]; if (n.containsRange(t) || t.containsRange(n) || n.isEqual(t)) { e.splice(i, 1); } } } return e; } getCommonAncestor() { return this.start.getCommonAncestor(this.end); } getContainedElement() { if (this.isCollapsed) { return null; } const t = this.start.nodeAfter; const e = this.end.nodeBefore; if (t && t.is("element") && t === e) { return t; } return null; } toJSON() { return { start: this.start.toJSON(), end: this.end.toJSON() }; } clone() { return new this.constructor(this.start, this.end); } _getTransformedByInsertOperation(t, e = false) { return this._getTransformedByInsertion(t.position, t.howMany, e); } _getTransformedByMoveOperation(t, e = false) { const n = t.sourcePosition; const i = t.howMany; const o = t.targetPosition; return this._getTransformedByMove(n, o, i, e); } _getTransformedBySplitOperation(t) { const e = this.start._getTransformedBySplitOperation(t); let n = this.end._getTransformedBySplitOperation(t); if (this.end.isEqual(t.insertionPosition)) { n = this.end.getShiftedBy(1); } if (e.root != n.root) { n = this.end.getShiftedBy(-1); } return new Bp(e, n); } _getTransformedByMergeOperation(t) { if ( this.start.isEqual(t.targetPosition) && this.end.isEqual(t.deletionPosition) ) { return new Bp(this.start); } let e = this.start._getTransformedByMergeOperation(t); let n = this.end._getTransformedByMergeOperation(t); if (e.root != n.root) { n = this.end.getShiftedBy(-1); } if (e.isAfter(n)) { if (t.sourcePosition.isBefore(t.targetPosition)) { e = vp._createAt(n); e.offset = 0; } else { if (!t.deletionPosition.isEqual(e)) { n = t.deletionPosition; } e = t.targetPosition; } return new Bp(e, n); } return new Bp(e, n); } _getTransformedByInsertion(t, e, n = false) { if (n && this.containsPosition(t)) { return [ new Bp(this.start, t), new Bp( t.getShiftedBy(e), this.end._getTransformedByInsertion(t, e) ), ]; } else { const n = new Bp(this.start, this.end); n.start = n.start._getTransformedByInsertion(t, e); n.end = n.end._getTransformedByInsertion(t, e); return [n]; } } _getTransformedByMove(t, e, n, i = false) { if (this.isCollapsed) { const i = this.start._getTransformedByMove(t, e, n); return [new Bp(i)]; } const o = Bp._createFromPositionAndShift(t, n); const r = e._getTransformedByDeletion(t, n); if (this.containsPosition(e) && !i) { if ( o.containsPosition(this.start) || o.containsPosition(this.end) ) { const i = this.start._getTransformedByMove(t, e, n); const o = this.end._getTransformedByMove(t, e, n); return [new Bp(i, o)]; } } let s; const a = this.getDifference(o); let c = null; const l = this.getIntersection(o); if (a.length == 1) { c = new Bp( a[0].start._getTransformedByDeletion(t, n), a[0].end._getTransformedByDeletion(t, n) ); } else if (a.length == 2) { c = new Bp(this.start, this.end._getTransformedByDeletion(t, n)); } if (c) { s = c._getTransformedByInsertion(r, n, l !== null || i); } else { s = []; } if (l) { const t = new Bp( l.start._getCombined(o.start, r), l.end._getCombined(o.start, r) ); if (s.length == 2) { s.splice(1, 0, t); } else { s.push(t); } } return s; } _getTransformedByDeletion(t, e) { let n = this.start._getTransformedByDeletion(t, e); let i = this.end._getTransformedByDeletion(t, e); if (n == null && i == null) { return null; } if (n == null) { n = t; } if (i == null) { i = t; } return new Bp(n, i); } static _createFromPositionAndShift(t, e) { const n = t; const i = t.getShiftedBy(e); return e > 0 ? new this(n, i) : new this(i, n); } static _createIn(t) { return new this(vp._createAt(t, 0), vp._createAt(t, t.maxOffset)); } static _createOn(t) { return this._createFromPositionAndShift( vp._createBefore(t), t.offsetSize ); } static _createFromRanges(t) { if (t.length === 0) { throw new N("range-create-from-ranges-empty-array", null); } else if (t.length == 1) { return t[0].clone(); } const e = t[0]; t.sort((t, e) => (t.start.isAfter(e.start) ? 1 : -1)); const n = t.indexOf(e); const i = new this(e.start, e.end); if (n > 0) { for (let e = n - 1; true; e++) { if (t[e].end.isEqual(i.start)) { i.start = vp._createAt(t[e].start); } else { break; } } } for (let e = n + 1; e < t.length; e++) { if (t[e].start.isEqual(i.end)) { i.end = vp._createAt(t[e].end); } else { break; } } return i; } static fromJSON(t, e) { return new this(vp.fromJSON(t.start, e), vp.fromJSON(t.end, e)); } } Bp.prototype.is = function (t) { return t === "range" || t === "model:range"; }; class Mp extends G() { constructor() { super(); this._modelToViewMapping = new WeakMap(); this._viewToModelMapping = new WeakMap(); this._viewToModelLengthCallbacks = new Map(); this._markerNameToElements = new Map(); this._elementToMarkerNames = new Map(); this._deferredBindingRemovals = new Map(); this._unboundMarkerNames = new Set(); this.on( "modelToViewPosition", (t, e) => { if (e.viewPosition) { return; } const n = this._modelToViewMapping.get(e.modelPosition.parent); if (!n) { throw new N( "mapping-model-position-view-parent-not-found", this, { modelPosition: e.modelPosition } ); } e.viewPosition = this.findPositionIn(n, e.modelPosition.offset); }, { priority: "low" } ); this.on( "viewToModelPosition", (t, e) => { if (e.modelPosition) { return; } const n = this.findMappedViewAncestor(e.viewPosition); const i = this._viewToModelMapping.get(n); const o = this._toModelOffset( e.viewPosition.parent, e.viewPosition.offset, n ); e.modelPosition = vp._createAt(i, o); }, { priority: "low" } ); } bindElements(t, e) { this._modelToViewMapping.set(t, e); this._viewToModelMapping.set(e, t); } unbindViewElement(t, e = {}) { const n = this.toModelElement(t); if (this._elementToMarkerNames.has(t)) { for (const e of this._elementToMarkerNames.get(t)) { this._unboundMarkerNames.add(e); } } if (e.defer) { this._deferredBindingRemovals.set(t, t.root); } else { this._viewToModelMapping.delete(t); if (this._modelToViewMapping.get(n) == t) { this._modelToViewMapping.delete(n); } } } unbindModelElement(t) { const e = this.toViewElement(t); this._modelToViewMapping.delete(t); if (this._viewToModelMapping.get(e) == t) { this._viewToModelMapping.delete(e); } } bindElementToMarker(t, e) { const n = this._markerNameToElements.get(e) || new Set(); n.add(t); const i = this._elementToMarkerNames.get(t) || new Set(); i.add(e); this._markerNameToElements.set(e, n); this._elementToMarkerNames.set(t, i); } unbindElementFromMarkerName(t, e) { const n = this._markerNameToElements.get(e); if (n) { n.delete(t); if (n.size == 0) { this._markerNameToElements.delete(e); } } const i = this._elementToMarkerNames.get(t); if (i) { i.delete(e); if (i.size == 0) { this._elementToMarkerNames.delete(t); } } } flushUnboundMarkerNames() { const t = Array.from(this._unboundMarkerNames); this._unboundMarkerNames.clear(); return t; } flushDeferredBindings() { for (const [t, e] of this._deferredBindingRemovals) { if (t.root == e) { this.unbindViewElement(t); } } this._deferredBindingRemovals = new Map(); } clearBindings() { this._modelToViewMapping = new WeakMap(); this._viewToModelMapping = new WeakMap(); this._markerNameToElements = new Map(); this._elementToMarkerNames = new Map(); this._unboundMarkerNames = new Set(); this._deferredBindingRemovals = new Map(); } toModelElement(t) { return this._viewToModelMapping.get(t); } toViewElement(t) { return this._modelToViewMapping.get(t); } toModelRange(t) { return new Bp( this.toModelPosition(t.start), this.toModelPosition(t.end) ); } toViewRange(t) { return new om( this.toViewPosition(t.start), this.toViewPosition(t.end) ); } toModelPosition(t) { const e = { viewPosition: t, mapper: this }; this.fire("viewToModelPosition", e); return e.modelPosition; } toViewPosition(t, e = {}) { const n = { modelPosition: t, mapper: this, isPhantom: e.isPhantom }; this.fire("modelToViewPosition", n); return n.viewPosition; } markerNameToElements(t) { const e = this._markerNameToElements.get(t); if (!e) { return null; } const n = new Set(); for (const t of e) { if (t.is("attributeElement")) { for (const e of t.getElementsWithSameId()) { n.add(e); } } else { n.add(t); } } return n; } registerViewToModelLength(t, e) { this._viewToModelLengthCallbacks.set(t, e); } findMappedViewAncestor(t) { let e = t.parent; while (!this._viewToModelMapping.has(e)) { e = e.parent; } return e; } _toModelOffset(t, e, n) { if (n != t) { const i = this._toModelOffset(t.parent, t.index, n); const o = this._toModelOffset(t, e, t); return i + o; } if (t.is("$text")) { return e; } let i = 0; for (let n = 0; n < e; n++) { i += this.getModelLength(t.getChild(n)); } return i; } getModelLength(t) { if (this._viewToModelLengthCallbacks.get(t.name)) { const e = this._viewToModelLengthCallbacks.get(t.name); return e(t); } else if (this._viewToModelMapping.has(t)) { return 1; } else if (t.is("$text")) { return t.data.length; } else if (t.is("uiElement")) { return 0; } else { let e = 0; for (const n of t.getChildren()) { e += this.getModelLength(n); } return e; } } findPositionIn(t, e) { let n; let i = 0; let o = 0; let r = 0; if (t.is("$text")) { return new im(t, e); } while (o < e) { n = t.getChild(r); i = this.getModelLength(n); o += i; r++; } if (o == e) { return this._moveViewPositionToTextNode(new im(t, r)); } else { return this.findPositionIn(n, e - (o - i)); } } _moveViewPositionToTextNode(t) { const e = t.nodeBefore; const n = t.nodeAfter; if (e instanceof zu) { return new im(e, e.data.length); } else if (n instanceof zu) { return new im(n, 0); } return t; } } class Ip { constructor() { this._consumable = new Map(); this._textProxyRegistry = new Map(); } add(t, e) { e = Lp(e); if (t instanceof bp) { t = this._getSymbolForTextProxy(t); } if (!this._consumable.has(t)) { this._consumable.set(t, new Map()); } this._consumable.get(t).set(e, true); } consume(t, e) { e = Lp(e); if (t instanceof bp) { t = this._getSymbolForTextProxy(t); } if (this.test(t, e)) { this._consumable.get(t).set(e, false); return true; } else { return false; } } test(t, e) { e = Lp(e); if (t instanceof bp) { t = this._getSymbolForTextProxy(t); } const n = this._consumable.get(t); if (n === undefined) { return null; } const i = n.get(e); if (i === undefined) { return null; } return i; } revert(t, e) { e = Lp(e); if (t instanceof bp) { t = this._getSymbolForTextProxy(t); } const n = this.test(t, e); if (n === false) { this._consumable.get(t).set(e, true); return true; } else if (n === true) { return false; } return null; } verifyAllConsumed(t) { const e = []; for (const [n, i] of this._consumable) { for (const [o, r] of i) { const i = o.split(":")[0]; if (r && t == i) { e.push({ event: o, item: n.name || n.description }); } } } if (e.length) { throw new N("conversion-model-consumable-not-consumed", null, { items: e, }); } } _getSymbolForTextProxy(t) { let e = null; const n = this._textProxyRegistry.get(t.startOffset); if (n) { const i = n.get(t.endOffset); if (i) { e = i.get(t.parent); } } if (!e) { e = this._addSymbolForTextProxy(t); } return e; } _addSymbolForTextProxy(t) { const e = t.startOffset; const n = t.endOffset; const i = t.parent; const o = Symbol("$textProxy:" + t.data); let r; let s; r = this._textProxyRegistry.get(e); if (!r) { r = new Map(); this._textProxyRegistry.set(e, r); } s = r.get(n); if (!s) { s = new Map(); r.set(n, s); } s.set(i, o); return o; } } function Lp(t) { const e = t.split(":"); if (e[0] == "insert") { return e[0]; } if (e[0] == "addMarker" || e[0] == "removeMarker") { return t; } return e.length > 1 ? e[0] + ":" + e[1] : e[0]; } class Np extends G() { constructor(t) { super(); this._conversionApi = { dispatcher: this, ...t }; this._firedEventsMap = new WeakMap(); } convertChanges(t, e, n) { const i = this._createConversionApi(n, t.getRefreshedItems()); for (const e of t.getMarkersToRemove()) { this._convertMarkerRemove(e.name, e.range, i); } const o = this._reduceChanges(t.getChanges()); for (const t of o) { if (t.type === "insert") { this._convertInsert( Bp._createFromPositionAndShift(t.position, t.length), i ); } else if (t.type === "reinsert") { this._convertReinsert( Bp._createFromPositionAndShift(t.position, t.length), i ); } else if (t.type === "remove") { this._convertRemove(t.position, t.length, t.name, i); } else { this._convertAttribute( t.range, t.attributeKey, t.attributeOldValue, t.attributeNewValue, i ); } } i.mapper.flushDeferredBindings(); for (const t of i.mapper.flushUnboundMarkerNames()) { const n = e.get(t).getRange(); this._convertMarkerRemove(t, n, i); this._convertMarkerAdd(t, n, i); } for (const e of t.getMarkersToAdd()) { this._convertMarkerAdd(e.name, e.range, i); } i.consumable.verifyAllConsumed("insert"); } convert(t, e, n, i = {}) { const o = this._createConversionApi(n, undefined, i); this._convertInsert(t, o); for (const [t, n] of e) { this._convertMarkerAdd(t, n, o); } o.consumable.verifyAllConsumed("insert"); } convertSelection(t, e, n) { const i = this._createConversionApi(n); this.fire("cleanSelection", { selection: t }, i); const o = t.getFirstPosition().root; if (!i.mapper.toViewElement(o)) { return; } const r = Array.from(e.getMarkersAtPosition(t.getFirstPosition())); this._addConsumablesForSelection(i.consumable, t, r); this.fire("selection", { selection: t }, i); if (!t.isCollapsed) { return; } for (const e of r) { if (i.consumable.test(t, "addMarker:" + e.name)) { const n = e.getRange(); if (!zp(t.getFirstPosition(), e, i.mapper)) { continue; } const o = { item: t, markerName: e.name, markerRange: n }; this.fire(`addMarker:${e.name}`, o, i); } } for (const e of t.getAttributeKeys()) { if (i.consumable.test(t, "attribute:" + e)) { const n = { item: t, range: t.getFirstRange(), attributeKey: e, attributeOldValue: null, attributeNewValue: t.getAttribute(e), }; this.fire(`attribute:${e}:$text`, n, i); } } } _convertInsert(t, e, n = {}) { if (!n.doNotAddConsumables) { this._addConsumablesForInsert(e.consumable, t); } for (const n of Array.from(t.getWalker({ shallow: true })).map(Rp)) { this._testAndFire("insert", n, e); } } _convertRemove(t, e, n, i) { this.fire(`remove:${n}`, { position: t, length: e }, i); } _convertAttribute(t, e, n, i, o) { this._addConsumablesForRange(o.consumable, t, `attribute:${e}`); for (const r of t) { const t = { item: r.item, range: Bp._createFromPositionAndShift( r.previousPosition, r.length ), attributeKey: e, attributeOldValue: n, attributeNewValue: i, }; this._testAndFire(`attribute:${e}`, t, o); } } _convertReinsert(t, e) { const n = Array.from(t.getWalker({ shallow: true })); this._addConsumablesForInsert(e.consumable, n); for (const t of n.map(Rp)) { this._testAndFire("insert", { ...t, reconversion: true }, e); } } _convertMarkerAdd(t, e, n) { if (e.root.rootName == "$graveyard") { return; } const i = `addMarker:${t}`; n.consumable.add(e, i); this.fire(i, { markerName: t, markerRange: e }, n); if (!n.consumable.consume(e, i)) { return; } this._addConsumablesForRange(n.consumable, e, i); for (const o of e.getItems()) { if (!n.consumable.test(o, i)) { continue; } const r = { item: o, range: Bp._createOn(o), markerName: t, markerRange: e, }; this.fire(i, r, n); } } _convertMarkerRemove(t, e, n) { if (e.root.rootName == "$graveyard") { return; } this.fire(`removeMarker:${t}`, { markerName: t, markerRange: e }, n); } _reduceChanges(t) { const e = { changes: t }; this.fire("reduceChanges", e); return e.changes; } _addConsumablesForInsert(t, e) { for (const n of e) { const e = n.item; if (t.test(e, "insert") === null) { t.add(e, "insert"); for (const n of e.getAttributeKeys()) { t.add(e, "attribute:" + n); } } } return t; } _addConsumablesForRange(t, e, n) { for (const i of e.getItems()) { t.add(i, n); } return t; } _addConsumablesForSelection(t, e, n) { t.add(e, "selection"); for (const i of n) { t.add(e, "addMarker:" + i.name); } for (const n of e.getAttributeKeys()) { t.add(e, "attribute:" + n); } return t; } _testAndFire(t, e, n) { const i = Pp(t, e); const o = e.item.is("$textProxy") ? n.consumable._getSymbolForTextProxy(e.item) : e.item; const r = this._firedEventsMap.get(n); const s = r.get(o); if (!s) { r.set(o, new Set([i])); } else if (!s.has(i)) { s.add(i); } else { return; } this.fire(i, e, n); } _testAndFireAddAttributes(t, e) { const n = { item: t, range: Bp._createOn(t) }; for (const t of n.item.getAttributeKeys()) { n.attributeKey = t; n.attributeOldValue = null; n.attributeNewValue = n.item.getAttribute(t); this._testAndFire(`attribute:${t}`, n, e); } } _createConversionApi(t, e = new Set(), n = {}) { const i = { ...this._conversionApi, consumable: new Ip(), writer: t, options: n, convertItem: (t) => this._convertInsert(Bp._createOn(t), i), convertChildren: (t) => this._convertInsert(Bp._createIn(t), i, { doNotAddConsumables: true, }), convertAttributes: (t) => this._testAndFireAddAttributes(t, i), canReuseView: (t) => !e.has(i.mapper.toModelElement(t)), }; this._firedEventsMap.set(i, new Map()); return i; } } function zp(t, e, n) { const i = e.getRange(); const o = Array.from(t.getAncestors()); o.shift(); o.reverse(); const r = o.some((t) => { if (i.containsItem(t)) { const e = n.toViewElement(t); return !!e.getCustomProperty("addHighlight"); } }); return !r; } function Pp(t, e) { const n = e.item.is("element") ? e.item.name : "$text"; return `${t}:${n}`; } function Rp(t) { const e = t.item; const n = Bp._createFromPositionAndShift(t.previousPosition, t.length); return { item: e, range: n }; } class Vp extends G(gp) { constructor(...t) { super(); this._lastRangeBackward = false; this._attrs = new Map(); this._ranges = []; if (t.length) { this.setTo(...t); } } get anchor() { if (this._ranges.length > 0) { const t = this._ranges[this._ranges.length - 1]; return this._lastRangeBackward ? t.end : t.start; } return null; } get focus() { if (this._ranges.length > 0) { const t = this._ranges[this._ranges.length - 1]; return this._lastRangeBackward ? t.start : t.end; } return null; } get isCollapsed() { const t = this._ranges.length; if (t === 1) { return this._ranges[0].isCollapsed; } else { return false; } } get rangeCount() { return this._ranges.length; } get isBackward() { return !this.isCollapsed && this._lastRangeBackward; } isEqual(t) { if (this.rangeCount != t.rangeCount) { return false; } else if (this.rangeCount === 0) { return true; } if (!this.anchor.isEqual(t.anchor) || !this.focus.isEqual(t.focus)) { return false; } for (const e of this._ranges) { let n = false; for (const i of t._ranges) { if (e.isEqual(i)) { n = true; break; } } if (!n) { return false; } } return true; } *getRanges() { for (const t of this._ranges) { yield new Bp(t.start, t.end); } } getFirstRange() { let t = null; for (const e of this._ranges) { if (!t || e.start.isBefore(t.start)) { t = e; } } return t ? new Bp(t.start, t.end) : null; } getLastRange() { let t = null; for (const e of this._ranges) { if (!t || e.end.isAfter(t.end)) { t = e; } } return t ? new Bp(t.start, t.end) : null; } getFirstPosition() { const t = this.getFirstRange(); return t ? t.start.clone() : null; } getLastPosition() { const t = this.getLastRange(); return t ? t.end.clone() : null; } setTo(...t) { let [e, n, i] = t; if (typeof n == "object") { i = n; n = undefined; } if (e === null) { this._setRanges([]); } else if (e instanceof Vp) { this._setRanges(e.getRanges(), e.isBackward); } else if (e && typeof e.getRanges == "function") { this._setRanges(e.getRanges(), e.isBackward); } else if (e instanceof Bp) { this._setRanges([e], !!i && !!i.backward); } else if (e instanceof vp) { this._setRanges([new Bp(e)]); } else if (e instanceof fp) { const t = !!i && !!i.backward; let o; if (n == "in") { o = Bp._createIn(e); } else if (n == "on") { o = Bp._createOn(e); } else if (n !== undefined) { o = new Bp(vp._createAt(e, n)); } else { throw new N("model-selection-setto-required-second-parameter", [ this, e, ]); } this._setRanges([o], t); } else if (Dt(e)) { this._setRanges(e, i && !!i.backward); } else { throw new N("model-selection-setto-not-selectable", [this, e]); } } _setRanges(t, e = false) { const n = Array.from(t); const i = n.some((e) => { if (!(e instanceof Bp)) { throw new N("model-selection-set-ranges-not-range", [this, t]); } return this._ranges.every((t) => !t.isEqual(e)); }); if (n.length === this._ranges.length && !i) { return; } this._replaceAllRanges(n); this._lastRangeBackward = !!e; this.fire("change:range", { directChange: true }); } setFocus(t, e) { if (this.anchor === null) { throw new N("model-selection-setfocus-no-ranges", [this, t]); } const n = vp._createAt(t, e); if (n.compareWith(this.focus) == "same") { return; } const i = this.anchor; if (this._ranges.length) { this._popRange(); } if (n.compareWith(i) == "before") { this._pushRange(new Bp(n, i)); this._lastRangeBackward = true; } else { this._pushRange(new Bp(i, n)); this._lastRangeBackward = false; } this.fire("change:range", { directChange: true }); } getAttribute(t) { return this._attrs.get(t); } getAttributes() { return this._attrs.entries(); } getAttributeKeys() { return this._attrs.keys(); } hasAttribute(t) { return this._attrs.has(t); } removeAttribute(t) { if (this.hasAttribute(t)) { this._attrs.delete(t); this.fire("change:attribute", { attributeKeys: [t], directChange: true, }); } } setAttribute(t, e) { if (this.getAttribute(t) !== e) { this._attrs.set(t, e); this.fire("change:attribute", { attributeKeys: [t], directChange: true, }); } } getSelectedElement() { if (this.rangeCount !== 1) { return null; } return this.getFirstRange().getContainedElement(); } *getSelectedBlocks() { const t = new WeakSet(); for (const e of this.getRanges()) { const n = jp(e.start, t); if (Up(n, e)) { yield n; } for (const n of e.getWalker()) { const i = n.item; if (n.type == "elementEnd" && Fp(i, t, e)) { yield i; } } const i = jp(e.end, t); if ($p(i, e)) { yield i; } } } containsEntireContent(t = this.anchor.root) { const e = vp._createAt(t, 0); const n = vp._createAt(t, "end"); return ( e.isTouching(this.getFirstPosition()) && n.isTouching(this.getLastPosition()) ); } _pushRange(t) { this._checkRange(t); this._ranges.push(new Bp(t.start, t.end)); } _checkRange(t) { for (let e = 0; e < this._ranges.length; e++) { if (t.isIntersecting(this._ranges[e])) { throw new N("model-selection-range-intersects", [this, t], { addedRange: t, intersectingRange: this._ranges[e], }); } } } _replaceAllRanges(t) { this._removeAllRanges(); for (const e of t) { this._pushRange(e); } } _removeAllRanges() { while (this._ranges.length > 0) { this._popRange(); } } _popRange() { this._ranges.pop(); } } Vp.prototype.is = function (t) { return t === "selection" || t === "model:selection"; }; function Op(t, e) { if (e.has(t)) { return false; } e.add(t); return t.root.document.model.schema.isBlock(t) && !!t.parent; } function Fp(t, e, n) { return Op(t, e) && Hp(t, n); } function jp(t, e) { const n = t.parent; const i = n.root.document.model.schema; const o = t.parent.getAncestors({ parentFirst: true, includeSelf: true, }); let r = false; const s = o.find((t) => { if (r) { return false; } r = i.isLimit(t); return !r && Op(t, e); }); o.forEach((t) => e.add(t)); return s; } function Hp(t, e) { const n = qp(t); if (!n) { return true; } const i = e.containsRange(Bp._createOn(n), true); return !i; } function Up(t, e) { if (!t) { return false; } if (e.isCollapsed || t.isEmpty) { return true; } if (e.start.isTouching(vp._createAt(t, t.maxOffset))) { return false; } return Hp(t, e); } function $p(t, e) { if (!t) { return false; } if (e.isCollapsed || t.isEmpty) { return true; } if (e.end.isTouching(vp._createAt(t, 0))) { return false; } return Hp(t, e); } function qp(t) { const e = t.root.document.model.schema; let n = t.parent; while (n) { if (e.isBlock(n)) { return n; } n = n.parent; } } class Wp extends G(Bp) { constructor(t, e) { super(t, e); Gp.call(this); } detach() { this.stopListening(); } toRange() { return new Bp(this.start, this.end); } static fromRange(t) { return new Wp(t.start, t.end); } } Wp.prototype.is = function (t) { return ( t === "liveRange" || t === "model:liveRange" || t == "range" || t === "model:range" ); }; function Gp() { this.listenTo( this.root.document.model, "applyOperation", (t, e) => { const n = e[0]; if (!n.isDocumentOperation) { return; } Kp.call(this, n); }, { priority: "low" } ); } function Kp(t) { const e = this.getTransformedByOperation(t); const n = Bp._createFromRanges(e); const i = !n.isEqual(this); const o = Yp(this, t); let r = null; if (i) { if (n.root.rootName == "$graveyard") { if (t.type == "remove") { r = t.sourcePosition; } else { r = t.deletionPosition; } } const e = this.toRange(); this.start = n.start; this.end = n.end; this.fire("change:range", e, { deletionPosition: r }); } else if (o) { this.fire("change:content", this.toRange(), { deletionPosition: r }); } } function Yp(t, e) { switch (e.type) { case "insert": return t.containsPosition(e.position); case "move": case "remove": case "reinsert": case "merge": return ( t.containsPosition(e.sourcePosition) || t.start.isEqual(e.sourcePosition) || t.containsPosition(e.targetPosition) ); case "split": return ( t.containsPosition(e.splitPosition) || t.containsPosition(e.insertionPosition) ); } return false; } const Qp = "selection:"; class Zp extends G(gp) { constructor(t) { super(); this._selection = new Jp(t); this._selection.delegate("change:range").to(this); this._selection.delegate("change:attribute").to(this); this._selection.delegate("change:marker").to(this); } get isCollapsed() { return this._selection.isCollapsed; } get anchor() { return this._selection.anchor; } get focus() { return this._selection.focus; } get rangeCount() { return this._selection.rangeCount; } get hasOwnRange() { return this._selection.hasOwnRange; } get isBackward() { return this._selection.isBackward; } get isGravityOverridden() { return this._selection.isGravityOverridden; } get markers() { return this._selection.markers; } get _ranges() { return this._selection._ranges; } getRanges() { return this._selection.getRanges(); } getFirstPosition() { return this._selection.getFirstPosition(); } getLastPosition() { return this._selection.getLastPosition(); } getFirstRange() { return this._selection.getFirstRange(); } getLastRange() { return this._selection.getLastRange(); } getSelectedBlocks() { return this._selection.getSelectedBlocks(); } getSelectedElement() { return this._selection.getSelectedElement(); } containsEntireContent(t) { return this._selection.containsEntireContent(t); } destroy() { this._selection.destroy(); } getAttributeKeys() { return this._selection.getAttributeKeys(); } getAttributes() { return this._selection.getAttributes(); } getAttribute(t) { return this._selection.getAttribute(t); } hasAttribute(t) { return this._selection.hasAttribute(t); } refresh() { this._selection.updateMarkers(); this._selection._updateAttributes(false); } observeMarkers(t) { this._selection.observeMarkers(t); } _setFocus(t, e) { this._selection.setFocus(t, e); } _setTo(...t) { this._selection.setTo(...t); } _setAttribute(t, e) { this._selection.setAttribute(t, e); } _removeAttribute(t) { this._selection.removeAttribute(t); } _getStoredAttributes() { return this._selection.getStoredAttributes(); } _overrideGravity() { return this._selection.overrideGravity(); } _restoreGravity(t) { this._selection.restoreGravity(t); } static _getStoreAttributeKey(t) { return Qp + t; } static _isStoreAttributeKey(t) { return t.startsWith(Qp); } } Zp.prototype.is = function (t) { return ( t === "selection" || t == "model:selection" || t == "documentSelection" || t == "model:documentSelection" ); }; class Jp extends Vp { constructor(t) { super(); this.markers = new nd({ idProperty: "name" }); this._attributePriority = new Map(); this._selectionRestorePosition = null; this._hasChangedRange = false; this._overriddenGravityRegister = new Set(); this._observedMarkers = new Set(); this._model = t.model; this._document = t; this.listenTo( this._model, "applyOperation", (t, e) => { const n = e[0]; if ( !n.isDocumentOperation || n.type == "marker" || n.type == "rename" || n.type == "noop" ) { return; } if (this._ranges.length == 0 && this._selectionRestorePosition) { this._fixGraveyardSelection(this._selectionRestorePosition); } this._selectionRestorePosition = null; if (this._hasChangedRange) { this._hasChangedRange = false; this.fire("change:range", { directChange: false }); } }, { priority: "lowest" } ); this.on("change:range", () => { this._validateSelectionRanges(this.getRanges()); }); this.listenTo(this._model.markers, "update", (t, e, n, i) => { this._updateMarker(e, i); }); this.listenTo(this._document, "change", (t, e) => { tk(this._model, e); }); } get isCollapsed() { const t = this._ranges.length; return t === 0 ? this._document._getDefaultRange().isCollapsed : super.isCollapsed; } get anchor() { return super.anchor || this._document._getDefaultRange().start; } get focus() { return super.focus || this._document._getDefaultRange().end; } get rangeCount() { return this._ranges.length ? this._ranges.length : 1; } get hasOwnRange() { return this._ranges.length > 0; } get isGravityOverridden() { return !!this._overriddenGravityRegister.size; } destroy() { for (let t = 0; t < this._ranges.length; t++) { this._ranges[t].detach(); } this.stopListening(); } *getRanges() { if (this._ranges.length) { yield* super.getRanges(); } else { yield this._document._getDefaultRange(); } } getFirstRange() { return super.getFirstRange() || this._document._getDefaultRange(); } getLastRange() { return super.getLastRange() || this._document._getDefaultRange(); } setTo(...t) { super.setTo(...t); this._updateAttributes(true); this.updateMarkers(); } setFocus(t, e) { super.setFocus(t, e); this._updateAttributes(true); this.updateMarkers(); } setAttribute(t, e) { if (this._setAttribute(t, e)) { const e = [t]; this.fire("change:attribute", { attributeKeys: e, directChange: true, }); } } removeAttribute(t) { if (this._removeAttribute(t)) { const e = [t]; this.fire("change:attribute", { attributeKeys: e, directChange: true, }); } } overrideGravity() { const t = T(); this._overriddenGravityRegister.add(t); if (this._overriddenGravityRegister.size === 1) { this._updateAttributes(true); } return t; } restoreGravity(t) { if (!this._overriddenGravityRegister.has(t)) { throw new N("document-selection-gravity-wrong-restore", this, { uid: t, }); } this._overriddenGravityRegister.delete(t); if (!this.isGravityOverridden) { this._updateAttributes(true); } } observeMarkers(t) { this._observedMarkers.add(t); this.updateMarkers(); } _replaceAllRanges(t) { this._validateSelectionRanges(t); super._replaceAllRanges(t); } _popRange() { this._ranges.pop().detach(); } _pushRange(t) { const e = this._prepareRange(t); if (e) { this._ranges.push(e); } } _validateSelectionRanges(t) { for (const e of t) { if (!this._document._validateSelectionRange(e)) { throw new N("document-selection-wrong-position", this, { range: e, }); } } } _prepareRange(t) { this._checkRange(t); if (t.root == this._document.graveyard) { return; } const e = Wp.fromRange(t); e.on("change:range", (t, n, i) => { this._hasChangedRange = true; if (e.root == this._document.graveyard) { this._selectionRestorePosition = i.deletionPosition; const t = this._ranges.indexOf(e); this._ranges.splice(t, 1); e.detach(); } }); return e; } updateMarkers() { if (!this._observedMarkers.size) { return; } const t = []; let e = false; for (const e of this._model.markers) { const n = e.name.split(":", 1)[0]; if (!this._observedMarkers.has(n)) { continue; } const i = e.getRange(); for (const n of this.getRanges()) { if (i.containsRange(n, !n.isCollapsed)) { t.push(e); } } } const n = Array.from(this.markers); for (const n of t) { if (!this.markers.has(n)) { this.markers.add(n); e = true; } } for (const n of Array.from(this.markers)) { if (!t.includes(n)) { this.markers.remove(n); e = true; } } if (e) { this.fire("change:marker", { oldMarkers: n, directChange: false }); } } _updateMarker(t, e) { const n = t.name.split(":", 1)[0]; if (!this._observedMarkers.has(n)) { return; } let i = false; const o = Array.from(this.markers); const r = this.markers.has(t); if (!e) { if (r) { this.markers.remove(t); i = true; } } else { let n = false; for (const t of this.getRanges()) { if (e.containsRange(t, !t.isCollapsed)) { n = true; break; } } if (n && !r) { this.markers.add(t); i = true; } else if (!n && r) { this.markers.remove(t); i = true; } } if (i) { this.fire("change:marker", { oldMarkers: o, directChange: false }); } } _updateAttributes(t) { const e = ad(this._getSurroundingAttributes()); const n = ad(this.getAttributes()); if (t) { this._attributePriority = new Map(); this._attrs = new Map(); } else { for (const [t, e] of this._attributePriority) { if (e == "low") { this._attrs.delete(t); this._attributePriority.delete(t); } } } this._setAttributesTo(e); const i = []; for (const [t, e] of this.getAttributes()) { if (!n.has(t) || n.get(t) !== e) { i.push(t); } } for (const [t] of n) { if (!this.hasAttribute(t)) { i.push(t); } } if (i.length > 0) { this.fire("change:attribute", { attributeKeys: i, directChange: false, }); } } _setAttribute(t, e, n = true) { const i = n ? "normal" : "low"; if (i == "low" && this._attributePriority.get(t) == "normal") { return false; } const o = super.getAttribute(t); if (o === e) { return false; } this._attrs.set(t, e); this._attributePriority.set(t, i); return true; } _removeAttribute(t, e = true) { const n = e ? "normal" : "low"; if (n == "low" && this._attributePriority.get(t) == "normal") { return false; } this._attributePriority.set(t, n); if (!super.hasAttribute(t)) { return false; } this._attrs.delete(t); return true; } _setAttributesTo(t) { const e = new Set(); for (const [e, n] of this.getAttributes()) { if (t.get(e) === n) { continue; } this._removeAttribute(e, false); } for (const [n, i] of t) { const t = this._setAttribute(n, i, false); if (t) { e.add(n); } } return e; } *getStoredAttributes() { const t = this.getFirstPosition().parent; if (this.isCollapsed && t.isEmpty) { for (const e of t.getAttributeKeys()) { if (e.startsWith(Qp)) { const n = e.substr(Qp.length); yield [n, t.getAttribute(e)]; } } } } _getSurroundingAttributes() { const t = this.getFirstPosition(); const e = this._model.schema; if (t.root.rootName == "$graveyard") { return null; } let n = null; if (!this.isCollapsed) { const t = this.getFirstRange(); for (const i of t) { if (i.item.is("element") && e.isObject(i.item)) { n = Xp(i.item, e); break; } if (i.type == "text") { n = i.item.getAttributes(); break; } } } else { const i = t.textNode ? t.textNode : t.nodeBefore; const o = t.textNode ? t.textNode : t.nodeAfter; if (!this.isGravityOverridden) { n = Xp(i, e); } if (!n) { n = Xp(o, e); } if (!this.isGravityOverridden && !n) { let t = i; while (t && !n) { t = t.previousSibling; n = Xp(t, e); } } if (!n) { let t = o; while (t && !n) { t = t.nextSibling; n = Xp(t, e); } } if (!n) { n = this.getStoredAttributes(); } } return n; } _fixGraveyardSelection(t) { const e = this._model.schema.getNearestSelectionRange(t); if (e) { this._pushRange(e); } } } function Xp(t, e) { if (!t) { return null; } if (t instanceof bp || t instanceof kp) { return t.getAttributes(); } if (!e.isInline(t)) { return null; } if (!e.isObject(t)) { return []; } const n = []; for (const [i, o] of t.getAttributes()) { if ( e.checkAttribute("$text", i) && e.getAttributeProperties(i).copyFromObject !== false ) { n.push([i, o]); } } return n; } function tk(t, e) { const n = t.document.differ; for (const i of n.getChanges()) { if (i.type != "insert") { continue; } const n = i.position.parent; const o = i.length === n.maxOffset; if (o) { t.enqueueChange(e, (t) => { const e = Array.from(n.getAttributeKeys()).filter((t) => t.startsWith(Qp) ); for (const i of e) { t.removeAttribute(i, n); } }); } } } class ek { constructor(t) { this._dispatchers = t; } add(t) { for (const e of this._dispatchers) { t(e); } return this; } } class nk extends ek { elementToElement(t) { return this.add(yk(t)); } elementToStructure(t) { return this.add(xk(t)); } attributeToElement(t) { return this.add(Ek(t)); } attributeToAttribute(t) { return this.add(Dk(t)); } markerToElement(t) { return this.add(Sk(t)); } markerToHighlight(t) { return this.add(Bk(t)); } markerToData(t) { return this.add(Tk(t)); } } function ik() { return (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const i = n.writer; const o = n.mapper.toViewPosition(e.range.start); const r = i.createText(e.item.data); i.insert(o, r); }; } function ok() { return (t, e, n) => { n.convertAttributes(e.item); if (!e.reconversion && e.item.is("element") && !e.item.isEmpty) { n.convertChildren(e.item); } }; } function rk() { return (t, e, n) => { const i = n.mapper.toViewPosition(e.position); const o = e.position.getShiftedBy(e.length); const r = n.mapper.toViewPosition(o, { isPhantom: true }); const s = n.writer.createRange(i, r); const a = n.writer.remove(s.getTrimmed()); for (const t of n.writer.createRangeIn(a).getItems()) { n.mapper.unbindViewElement(t, { defer: true }); } }; } function sk(t, e) { const n = t.createAttributeElement("span", e.attributes); if (e.classes) { n._addClass(e.classes); } if (typeof e.priority === "number") { n._priority = e.priority; } n._id = e.id; return n; } function ak() { return (t, e, n) => { const i = e.selection; if (i.isCollapsed) { return; } if (!n.consumable.consume(i, "selection")) { return; } const o = []; for (const t of i.getRanges()) { o.push(n.mapper.toViewRange(t)); } n.writer.setSelection(o, { backward: i.isBackward }); }; } function ck() { return (t, e, n) => { const i = e.selection; if (!i.isCollapsed) { return; } if (!n.consumable.consume(i, "selection")) { return; } const o = n.writer; const r = i.getFirstPosition(); const s = n.mapper.toViewPosition(r); const a = o.breakAttributes(s); o.setSelection(a); }; } function lk() { return (t, e, n) => { const i = n.writer; const o = i.document.selection; for (const t of o.getRanges()) { if (t.isCollapsed) { if (t.end.parent.isAttached()) { n.writer.mergeAttributes(t.start); } } } i.setSelection(null); }; } function dk(t) { return (e, n, i) => { if (!i.consumable.test(n.item, e.name)) { return; } const o = t(n.attributeOldValue, i, n); const r = t(n.attributeNewValue, i, n); if (!o && !r) { return; } i.consumable.consume(n.item, e.name); const s = i.writer; const a = s.document.selection; if (n.item instanceof Vp || n.item instanceof Zp) { s.wrap(a.getFirstRange(), r); } else { let t = i.mapper.toViewRange(n.range); if (n.attributeOldValue !== null && o) { t = s.unwrap(t, o); } if (n.attributeNewValue !== null && r) { s.wrap(t, r); } } }; } function uk(t, e = qk) { return (n, i, o) => { if (!e(i.item, o.consumable, { preflight: true })) { return; } const r = t(i.item, o, i); if (!r) { return; } e(i.item, o.consumable); const s = o.mapper.toViewPosition(i.range.start); o.mapper.bindElements(i.item, r); o.writer.insert(s, r); o.convertAttributes(i.item); Uk(r, i.item.getChildren(), o, { reconversion: i.reconversion }); }; } function hk(t, e) { return (n, i, o) => { if (!e(i.item, o.consumable, { preflight: true })) { return; } const r = new Map(); o.writer._registerSlotFactory(Fk(i.item, r, o)); const s = t(i.item, o, i); o.writer._clearSlotFactory(); if (!s) { return; } jk(i.item, r, o); e(i.item, o.consumable); const a = o.mapper.toViewPosition(i.range.start); o.mapper.bindElements(i.item, s); o.writer.insert(a, s); o.convertAttributes(i.item); Hk(s, r, o, { reconversion: i.reconversion }); }; } function mk(t) { return (e, n, i) => { n.isOpening = true; const o = t(n, i); n.isOpening = false; const r = t(n, i); if (!o || !r) { return; } const s = n.markerRange; if (s.isCollapsed && !i.consumable.consume(s, e.name)) { return; } for (const t of s) { if (!i.consumable.consume(t.item, e.name)) { return; } } const a = i.mapper; const c = i.writer; c.insert(a.toViewPosition(s.start), o); i.mapper.bindElementToMarker(o, n.markerName); if (!s.isCollapsed) { c.insert(a.toViewPosition(s.end), r); i.mapper.bindElementToMarker(r, n.markerName); } e.stop(); }; } function gk() { return (t, e, n) => { const i = n.mapper.markerNameToElements(e.markerName); if (!i) { return; } for (const t of i) { n.mapper.unbindElementFromMarkerName(t, e.markerName); n.writer.clear(n.writer.createRangeOn(t), t); } n.writer.clearClonedElementsGroup(e.markerName); t.stop(); }; } function fk(t) { return (e, n, i) => { const o = t(n.markerName, i); if (!o) { return; } const r = n.markerRange; if (!i.consumable.consume(r, e.name)) { return; } pk(r, false, i, n, o); pk(r, true, i, n, o); e.stop(); }; } function pk(t, e, n, i, o) { const r = e ? t.start : t.end; const s = r.nodeAfter && r.nodeAfter.is("element") ? r.nodeAfter : null; const a = r.nodeBefore && r.nodeBefore.is("element") ? r.nodeBefore : null; if (s || a) { let t; let r; if ((e && s) || (!e && !a)) { t = s; r = true; } else { t = a; r = false; } const c = n.mapper.toViewElement(t); if (c) { kk(c, e, r, n, i, o); return; } } const c = n.mapper.toViewPosition(r); bk(c, e, n, i, o); } function kk(t, e, n, i, o, r) { const s = `data-${r.group}-${e ? "start" : "end"}-${ n ? "before" : "after" }`; const a = t.hasAttribute(s) ? t.getAttribute(s).split(",") : []; a.unshift(r.name); i.writer.setAttribute(s, a.join(","), t); i.mapper.bindElementToMarker(t, o.markerName); } function bk(t, e, n, i, o) { const r = `${o.group}-${e ? "start" : "end"}`; const s = o.name ? { name: o.name } : null; const a = n.writer.createUIElement(r, s); n.writer.insert(t, a); n.mapper.bindElementToMarker(a, i.markerName); } function wk(t) { return (e, n, i) => { const o = t(n.markerName, i); if (!o) { return; } const r = i.mapper.markerNameToElements(n.markerName); if (!r) { return; } for (const t of r) { i.mapper.unbindElementFromMarkerName(t, n.markerName); if (t.is("containerElement")) { s(`data-${o.group}-start-before`, t); s(`data-${o.group}-start-after`, t); s(`data-${o.group}-end-before`, t); s(`data-${o.group}-end-after`, t); } else { i.writer.clear(i.writer.createRangeOn(t), t); } } i.writer.clearClonedElementsGroup(n.markerName); e.stop(); function s(t, e) { if (e.hasAttribute(t)) { const n = new Set(e.getAttribute(t).split(",")); n.delete(o.name); if (n.size == 0) { i.writer.removeAttribute(t, e); } else { i.writer.setAttribute(t, Array.from(n).join(","), e); } } } }; } function Ak(t) { return (e, n, i) => { if (!i.consumable.test(n.item, e.name)) { return; } const o = t(n.attributeOldValue, i, n); const r = t(n.attributeNewValue, i, n); if (!o && !r) { return; } i.consumable.consume(n.item, e.name); const s = i.mapper.toViewElement(n.item); const a = i.writer; if (!s) { throw new N( "conversion-attribute-to-attribute-on-text", i.dispatcher, n ); } if (n.attributeOldValue !== null && o) { if (o.key == "class") { const t = typeof o.value == "string" ? o.value.split(/\s+/) : o.value; for (const e of t) { a.removeClass(e, s); } } else if (o.key == "style") { if (typeof o.value == "string") { const t = new Hh(a.document.stylesProcessor); t.setTo(o.value); for (const [e] of t.getStylesEntries()) { a.removeStyle(e, s); } } else { const t = Object.keys(o.value); for (const e of t) { a.removeStyle(e, s); } } } else { a.removeAttribute(o.key, s); } } if (n.attributeNewValue !== null && r) { if (r.key == "class") { const t = typeof r.value == "string" ? r.value.split(/\s+/) : r.value; for (const e of t) { a.addClass(e, s); } } else if (r.key == "style") { if (typeof r.value == "string") { const t = new Hh(a.document.stylesProcessor); t.setTo(r.value); for (const [e, n] of t.getStylesEntries()) { a.setStyle(e, n, s); } } else { const t = Object.keys(r.value); for (const e of t) { a.setStyle(e, r.value[e], s); } } } else { a.setAttribute(r.key, r.value, s); } } }; } function _k(t) { return (e, n, i) => { if (!n.item) { return; } if ( !(n.item instanceof Vp || n.item instanceof Zp) && !n.item.is("$textProxy") ) { return; } const o = Pk(t, n, i); if (!o) { return; } if (!i.consumable.consume(n.item, e.name)) { return; } const r = i.writer; const s = sk(r, o); const a = r.document.selection; if (n.item instanceof Vp || n.item instanceof Zp) { r.wrap(a.getFirstRange(), s); } else { const t = i.mapper.toViewRange(n.range); const e = r.wrap(t, s); for (const t of e.getItems()) { if (t.is("attributeElement") && t.isSimilar(s)) { i.mapper.bindElementToMarker(t, n.markerName); break; } } } }; } function Ck(t) { return (e, n, i) => { if (!n.item) { return; } if (!(n.item instanceof wp)) { return; } const o = Pk(t, n, i); if (!o) { return; } if (!i.consumable.test(n.item, e.name)) { return; } const r = i.mapper.toViewElement(n.item); if (r && r.getCustomProperty("addHighlight")) { i.consumable.consume(n.item, e.name); for (const t of Bp._createIn(n.item)) { i.consumable.consume(t.item, e.name); } const t = r.getCustomProperty("addHighlight"); t(r, o, i.writer); i.mapper.bindElementToMarker(r, n.markerName); } }; } function vk(t) { return (e, n, i) => { if (n.markerRange.isCollapsed) { return; } const o = Pk(t, n, i); if (!o) { return; } const r = sk(i.writer, o); const s = i.mapper.markerNameToElements(n.markerName); if (!s) { return; } for (const t of s) { i.mapper.unbindElementFromMarkerName(t, n.markerName); if (t.is("attributeElement")) { i.writer.unwrap(i.writer.createRangeOn(t), r); } else { const e = t.getCustomProperty("removeHighlight"); e(t, o.id, i.writer); } } i.writer.clearClonedElementsGroup(n.markerName); e.stop(); }; } function yk(t) { const e = Mk(t.model); const n = Ik(t.view, "container"); if (e.attributes.length) { e.children = true; } return (i) => { i.on(`insert:${e.name}`, uk(n, Ok(e)), { priority: t.converterPriority || "normal", }); if (e.children || e.attributes.length) { i.on("reduceChanges", Vk(e), { priority: "low" }); } }; } function xk(t) { const e = Mk(t.model); const n = Ik(t.view, "container"); e.children = true; return (i) => { if (i._conversionApi.schema.checkChild(e.name, "$text")) { throw new N("conversion-element-to-structure-disallowed-text", i, { elementName: e.name, }); } i.on(`insert:${e.name}`, hk(n, Ok(e)), { priority: t.converterPriority || "normal", }); i.on("reduceChanges", Vk(e), { priority: "low" }); }; } function Ek(t) { t = hp(t); let e = t.model; if (typeof e == "string") { e = { key: e }; } let n = `attribute:${e.key}`; if (e.name) { n += ":" + e.name; } if (e.values) { for (const n of e.values) { t.view[n] = Ik(t.view[n], "attribute"); } } else { t.view = Ik(t.view, "attribute"); } const i = Nk(t); return (e) => { e.on(n, dk(i), { priority: t.converterPriority || "normal" }); }; } function Dk(t) { t = hp(t); let e = t.model; if (typeof e == "string") { e = { key: e }; } let n = `attribute:${e.key}`; if (e.name) { n += ":" + e.name; } if (e.values) { for (const n of e.values) { t.view[n] = zk(t.view[n]); } } else { t.view = zk(t.view); } const i = Nk(t); return (e) => { e.on(n, Ak(i), { priority: t.converterPriority || "normal" }); }; } function Sk(t) { const e = Ik(t.view, "ui"); return (n) => { n.on(`addMarker:${t.model}`, mk(e), { priority: t.converterPriority || "normal", }); n.on(`removeMarker:${t.model}`, gk(), { priority: t.converterPriority || "normal", }); }; } function Tk(t) { t = hp(t); const e = t.model; let n = t.view; if (!n) { n = (n) => ({ group: e, name: n.substr(t.model.length + 1) }); } return (i) => { i.on(`addMarker:${e}`, fk(n), { priority: t.converterPriority || "normal", }); i.on(`removeMarker:${e}`, wk(n), { priority: t.converterPriority || "normal", }); }; } function Bk(t) { return (e) => { e.on(`addMarker:${t.model}`, _k(t.view), { priority: t.converterPriority || "normal", }); e.on(`addMarker:${t.model}`, Ck(t.view), { priority: t.converterPriority || "normal", }); e.on(`removeMarker:${t.model}`, vk(t.view), { priority: t.converterPriority || "normal", }); }; } function Mk(t) { if (typeof t == "string") { t = { name: t }; } return { name: t.name, attributes: t.attributes ? rl(t.attributes) : [], children: !!t.children, }; } function Ik(t, e) { if (typeof t == "function") { return t; } return (n, i) => Lk(t, i, e); } function Lk(t, e, n) { if (typeof t == "string") { t = { name: t }; } let i; const o = e.writer; const r = Object.assign({}, t.attributes); if (n == "container") { i = o.createContainerElement(t.name, r); } else if (n == "attribute") { const e = { priority: t.priority || wm.DEFAULT_PRIORITY }; i = o.createAttributeElement(t.name, r, e); } else { i = o.createUIElement(t.name, r); } if (t.styles) { const e = Object.keys(t.styles); for (const n of e) { o.setStyle(n, t.styles[n], i); } } if (t.classes) { const e = t.classes; if (typeof e == "string") { o.addClass(e, i); } else { for (const t of e) { o.addClass(t, i); } } } return i; } function Nk(t) { if (t.model.values) { return (e, n, i) => { const o = t.view[e]; if (o) { return o(e, n, i); } return null; }; } else { return t.view; } } function zk(t) { if (typeof t == "string") { return (e) => ({ key: t, value: e }); } else if (typeof t == "object") { if (t.value) { return () => t; } else { return (e) => ({ key: t.key, value: e }); } } else { return t; } } function Pk(t, e, n) { const i = typeof t == "function" ? t(e, n) : t; if (!i) { return null; } if (!i.priority) { i.priority = 10; } if (!i.id) { i.id = e.markerName; } return i; } function Rk(t) { return (e, n) => { if (!e.is("element", t.name)) { return false; } if (n.type == "attribute") { if (t.attributes.includes(n.attributeKey)) { return true; } } else { if (t.children) { return true; } } return false; }; } function Vk(t) { const e = Rk(t); return (t, n) => { const i = []; if (!n.reconvertedElements) { n.reconvertedElements = new Set(); } for (const t of n.changes) { const o = t.type == "attribute" ? t.range.start.nodeAfter : t.position.parent; if (!o || !e(o, t)) { i.push(t); continue; } if (!n.reconvertedElements.has(o)) { n.reconvertedElements.add(o); const t = vp._createBefore(o); let e = i.length; for (let n = i.length - 1; n >= 0; n--) { const o = i[n]; const r = o.type == "attribute" ? o.range.start : o.position; const s = r.compareWith(t); if (s == "before" || (o.type == "remove" && s == "same")) { break; } e = n; } i.splice( e, 0, { type: "remove", name: o.name, position: t, length: 1 }, { type: "reinsert", name: o.name, position: t, length: 1 } ); } } n.changes = i; }; } function Ok(t) { return (e, n, i = {}) => { const o = ["insert"]; for (const n of t.attributes) { if (e.hasAttribute(n)) { o.push(`attribute:${n}`); } } if (!o.every((t) => n.test(e, t))) { return false; } if (!i.preflight) { o.forEach((t) => n.consume(e, t)); } return true; }; } function Fk(t, e, n) { return (i, o) => { const r = i.createContainerElement("$slot"); let s = null; if (o === "children") { s = Array.from(t.getChildren()); } else if (typeof o == "function") { s = Array.from(t.getChildren()).filter((t) => o(t)); } else { throw new N("conversion-slot-mode-unknown", n.dispatcher, { modeOrFilter: o, }); } e.set(r, s); return r; }; } function jk(t, e, n) { const i = Array.from(e.values()).flat(); const o = new Set(i); if (o.size != i.length) { throw new N("conversion-slot-filter-overlap", n.dispatcher, { element: t, }); } if (o.size != t.childCount) { throw new N("conversion-slot-filter-incomplete", n.dispatcher, { element: t, }); } } function Hk(t, e, n, i) { n.mapper.on("modelToViewPosition", s, { priority: "highest" }); let o = null; let r = null; for ([o, r] of e) { Uk(t, r, n, i); n.writer.move( n.writer.createRangeIn(o), n.writer.createPositionBefore(o) ); n.writer.remove(o); } n.mapper.off("modelToViewPosition", s); function s(t, e) { const n = e.modelPosition.nodeAfter; const i = r.indexOf(n); if (i < 0) { return; } e.viewPosition = e.mapper.findPositionIn(o, i); } } function Uk(t, e, n, i) { for (const o of e) { if (!$k(t.root, o, n, i)) { n.convertItem(o); } } } function $k(t, e, n, i) { const { writer: o, mapper: r } = n; if (!i.reconversion) { return false; } const s = r.toViewElement(e); if (!s || s.root == t) { return false; } if (!n.canReuseView(s)) { return false; } o.move(o.createRangeOn(s), r.toViewPosition(vp._createBefore(e))); return true; } function qk(t, e, { preflight: n } = {}) { if (n) { return e.test(t, "insert"); } else { return e.consume(t, "insert"); } } function Wk(t) { const { schema: e, document: n } = t.model; for (const i of n.getRoots()) { if (i.isEmpty && !e.checkChild(i, "$text")) { if (e.checkChild(i, "paragraph")) { t.insertElement("paragraph", i); return true; } } } return false; } function Gk(t, e, n) { const i = n.createContext(t); if (!n.checkChild(i, "paragraph")) { return false; } if (!n.checkChild(i.push("paragraph"), e)) { return false; } return true; } function Kk(t, e) { const n = e.createElement("paragraph"); e.insert(n, t); return e.createPositionAt(n, 0); } class Yk extends ek { elementToElement(t) { return this.add(Xk(t)); } elementToAttribute(t) { return this.add(tb(t)); } attributeToAttribute(t) { return this.add(eb(t)); } elementToMarker(t) { return this.add(nb(t)); } dataToMarker(t) { return this.add(ib(t)); } } function Qk() { return (t, e, n) => { if ( !e.modelRange && n.consumable.consume(e.viewItem, { name: true }) ) { const { modelRange: t, modelCursor: i } = n.convertChildren( e.viewItem, e.modelCursor ); e.modelRange = t; e.modelCursor = i; } }; } function Zk() { return (t, e, { schema: n, consumable: i, writer: o }) => { let r = e.modelCursor; if (!i.test(e.viewItem)) { return; } if (!n.checkChild(r, "$text")) { if (!Gk(r, "$text", n)) { return; } if (e.viewItem.data.trim().length == 0) { return; } const t = r.nodeBefore; r = Kk(r, o); if (t && t.is("element", "$marker")) { o.move(o.createRangeOn(t), r); r = o.createPositionAfter(t); } } i.consume(e.viewItem); const s = o.createText(e.viewItem.data); o.insert(s, r); e.modelRange = o.createRange(r, r.getShiftedBy(s.offsetSize)); e.modelCursor = e.modelRange.end; }; } function Jk(t, e) { return (n, i) => { const o = i.newSelection; const r = []; for (const t of o.getRanges()) { r.push(e.toModelRange(t)); } const s = t.createSelection(r, { backward: o.isBackward }); if (!s.isEqual(t.document.selection)) { t.change((t) => { t.setSelection(s); }); } }; } function Xk(t) { t = hp(t); const e = sb(t); const n = rb(t.view); const i = n ? `element:${n}` : "element"; return (n) => { n.on(i, e, { priority: t.converterPriority || "normal" }); }; } function tb(t) { t = hp(t); lb(t); const e = db(t, false); const n = rb(t.view); const i = n ? `element:${n}` : "element"; return (n) => { n.on(i, e, { priority: t.converterPriority || "low" }); }; } function eb(t) { t = hp(t); let e = null; if (typeof t.view == "string" || t.view.key) { e = cb(t); } lb(t, e); const n = db(t, true); return (e) => { e.on("element", n, { priority: t.converterPriority || "low" }); }; } function nb(t) { const e = mb(t.model); return Xk({ ...t, model: e }); } function ib(t) { t = hp(t); if (!t.model) { t.model = (e) => (e ? t.view + ":" + e : t.view); } const e = { view: t.view, model: t.model }; const n = sb(gb(e, "start")); const i = sb(gb(e, "end")); return (o) => { o.on(`element:${t.view}-start`, n, { priority: t.converterPriority || "normal", }); o.on(`element:${t.view}-end`, i, { priority: t.converterPriority || "normal", }); const r = M.low; const s = M.highest; const a = M.get(t.converterPriority) / s; o.on("element", ob(e), { priority: r + a }); }; } function ob(t) { return (e, n, i) => { const o = `data-${t.view}`; if ( !i.consumable.test(n.viewItem, { attributes: o + "-end-after" }) && !i.consumable.test(n.viewItem, { attributes: o + "-start-after", }) && !i.consumable.test(n.viewItem, { attributes: o + "-end-before" }) && !i.consumable.test(n.viewItem, { attributes: o + "-start-before" }) ) { return; } if (!n.modelRange) { Object.assign(n, i.convertChildren(n.viewItem, n.modelCursor)); } if ( i.consumable.consume(n.viewItem, { attributes: o + "-end-after" }) ) { r( n.modelRange.end, n.viewItem.getAttribute(o + "-end-after").split(",") ); } if ( i.consumable.consume(n.viewItem, { attributes: o + "-start-after" }) ) { r( n.modelRange.end, n.viewItem.getAttribute(o + "-start-after").split(",") ); } if ( i.consumable.consume(n.viewItem, { attributes: o + "-end-before" }) ) { r( n.modelRange.start, n.viewItem.getAttribute(o + "-end-before").split(",") ); } if ( i.consumable.consume(n.viewItem, { attributes: o + "-start-before", }) ) { r( n.modelRange.start, n.viewItem.getAttribute(o + "-start-before").split(",") ); } function r(e, o) { for (const r of o) { const o = t.model(r, i); const s = i.writer.createElement("$marker", { "data-name": o }); i.writer.insert(s, e); if (n.modelCursor.isEqual(e)) { n.modelCursor = n.modelCursor.getShiftedBy(1); } else { n.modelCursor = n.modelCursor._getTransformedByInsertion(e, 1); } n.modelRange = n.modelRange._getTransformedByInsertion(e, 1)[0]; } } }; } function rb(t) { if (typeof t == "string") { return t; } if (typeof t == "object" && typeof t.name == "string") { return t.name; } return null; } function sb(t) { const e = new Ru(t.view); return (n, i, o) => { const r = e.match(i.viewItem); if (!r) { return; } const s = r.match; s.name = true; if (!o.consumable.test(i.viewItem, s)) { return; } const a = ab(t.model, i.viewItem, o); if (!a) { return; } if (!o.safeInsert(a, i.modelCursor)) { return; } o.consumable.consume(i.viewItem, s); o.convertChildren(i.viewItem, a); o.updateConversionResult(a, i); }; } function ab(t, e, n) { if (t instanceof Function) { return t(e, n); } else { return n.writer.createElement(t); } } function cb(t) { if (typeof t.view == "string") { t.view = { key: t.view }; } const e = t.view.key; const n = typeof t.view.value == "undefined" ? /[\s\S]*/ : t.view.value; let i; if (e == "class" || e == "style") { const t = e == "class" ? "classes" : "styles"; i = { [t]: n }; } else { i = { attributes: { [e]: n } }; } if (t.view.name) { i.name = t.view.name; } t.view = i; return e; } function lb(t, e = null) { const n = e === null ? true : (t) => t.getAttribute(e); const i = typeof t.model != "object" ? t.model : t.model.key; const o = typeof t.model != "object" || typeof t.model.value == "undefined" ? n : t.model.value; t.model = { key: i, value: o }; } function db(t, e) { const n = new Ru(t.view); return (i, o, r) => { if (!o.modelRange && e) { return; } const s = n.match(o.viewItem); if (!s) { return; } if (ub(t.view, o.viewItem)) { s.match.name = true; } else { delete s.match.name; } if (!r.consumable.test(o.viewItem, s.match)) { return; } const a = t.model.key; const c = typeof t.model.value == "function" ? t.model.value(o.viewItem, r) : t.model.value; if (c === null) { return; } if (!o.modelRange) { Object.assign(o, r.convertChildren(o.viewItem, o.modelCursor)); } const l = hb(o.modelRange, { key: a, value: c }, e, r); if (l) { if (r.consumable.test(o.viewItem, { name: true })) { s.match.name = true; } r.consumable.consume(o.viewItem, s.match); } }; } function ub(t, e) { const n = typeof t == "function" ? t(e) : t; if (typeof n == "object" && !rb(n)) { return false; } return !n.classes && !n.attributes && !n.styles; } function hb(t, e, n, i) { let o = false; for (const r of Array.from(t.getItems({ shallow: n }))) { if (!i.schema.checkAttribute(r, e.key)) { continue; } o = true; if (r.hasAttribute(e.key)) { continue; } i.writer.setAttribute(e.key, e.value, r); } return o; } function mb(t) { return (e, n) => { const i = typeof t == "string" ? t : t(e, n); return n.writer.createElement("$marker", { "data-name": i }); }; } function gb(t, e) { const n = (e, n) => { const i = e.getAttribute("name"); const o = t.model(i, n); return n.writer.createElement("$marker", { "data-name": o }); }; return { view: `${t.view}-${e}`, model: n }; } function fb(t) { t.document.registerPostFixer((e) => pb(e, t)); } function pb(t, e) { const n = e.document.selection; const i = e.schema; const o = []; let r = false; for (const t of n.getRanges()) { const e = kb(t, i); if (e && !e.isEqual(t)) { o.push(e); r = true; } else { o.push(t); } } if (r) { t.setSelection(Cb(o), { backward: n.isBackward }); } return false; } function kb(t, e) { if (t.isCollapsed) { return bb(t, e); } return wb(t, e); } function bb(t, e) { const n = t.start; const i = e.getNearestSelectionRange(n); if (!i) { const t = n .getAncestors() .reverse() .find((t) => e.isObject(t)); if (t) { return Bp._createOn(t); } return null; } if (!i.isCollapsed) { return i; } const o = i.start; if (n.isEqual(o)) { return null; } return new Bp(o); } function wb(t, e) { const { start: n, end: i } = t; const o = e.checkChild(n, "$text"); const r = e.checkChild(i, "$text"); const s = e.getLimitElement(n); const a = e.getLimitElement(i); if (s === a) { if (o && r) { return null; } if (_b(n, i, e)) { const t = n.nodeAfter && e.isSelectable(n.nodeAfter); const o = t ? null : e.getNearestSelectionRange(n, "forward"); const r = i.nodeBefore && e.isSelectable(i.nodeBefore); const s = r ? null : e.getNearestSelectionRange(i, "backward"); const a = o ? o.start : n; const c = s ? s.end : i; return new Bp(a, c); } } const c = s && !s.is("rootElement"); const l = a && !a.is("rootElement"); if (c || l) { const t = n.nodeAfter && i.nodeBefore && n.nodeAfter.parent === i.nodeBefore.parent; const o = c && (!t || !vb(n.nodeAfter, e)); const r = l && (!t || !vb(i.nodeBefore, e)); let d = n; let u = i; if (o) { d = vp._createBefore(Ab(s, e)); } if (r) { u = vp._createAfter(Ab(a, e)); } return new Bp(d, u); } return null; } function Ab(t, e) { let n = t; let i = n; while (e.isLimit(i) && i.parent) { n = i; i = i.parent; } return n; } function _b(t, e, n) { const i = (t.nodeAfter && !n.isLimit(t.nodeAfter)) || n.checkChild(t, "$text"); const o = (e.nodeBefore && !n.isLimit(e.nodeBefore)) || n.checkChild(e, "$text"); return i || o; } function Cb(t) { const e = [...t]; const n = new Set(); let i = 1; while (i < e.length) { const t = e[i]; const o = e.slice(0, i); for (const [r, s] of o.entries()) { if (n.has(r)) { continue; } if (t.isEqual(s)) { n.add(r); } else if (t.isIntersecting(s)) { n.add(r); n.add(i); const o = t.getJoined(s); e.push(o); } } i++; } const o = e.filter((t, e) => !n.has(e)); return o; } function vb(t, e) { return t && e.isSelectable(t); } class yb extends mt() { constructor(t, e) { super(); this.model = t; this.view = new mp(e); this.mapper = new Mp(); this.downcastDispatcher = new Np({ mapper: this.mapper, schema: t.schema, }); const n = this.model.document; const i = n.selection; const o = this.model.markers; this.listenTo( this.model, "_beforeChanges", () => { this.view._disableRendering(true); }, { priority: "highest" } ); this.listenTo( this.model, "_afterChanges", () => { this.view._disableRendering(false); }, { priority: "lowest" } ); this.listenTo( n, "change", () => { this.view.change((t) => { this.downcastDispatcher.convertChanges(n.differ, o, t); this.downcastDispatcher.convertSelection(i, o, t); }); }, { priority: "low" } ); this.listenTo( this.view.document, "selectionChange", Jk(this.model, this.mapper) ); this.listenTo( this.view.document, "beforeinput", xb(this.mapper, this.model.schema, this.view), { priority: "high" } ); this.downcastDispatcher.on("insert:$text", ik(), { priority: "lowest", }); this.downcastDispatcher.on("insert", ok(), { priority: "lowest" }); this.downcastDispatcher.on("remove", rk(), { priority: "low" }); this.downcastDispatcher.on("cleanSelection", lk()); this.downcastDispatcher.on("selection", ak(), { priority: "low" }); this.downcastDispatcher.on("selection", ck(), { priority: "low" }); this.view.document.roots .bindTo(this.model.document.roots) .using((t) => { if (t.rootName == "$graveyard") { return null; } const e = new em(this.view.document, t.name); e.rootName = t.rootName; this.mapper.bindElements(t, e); return e; }); } destroy() { this.view.destroy(); this.stopListening(); } reconvertMarker(t) { const e = typeof t == "string" ? t : t.name; const n = this.model.markers.get(e); if (!n) { throw new N( "editingcontroller-reconvertmarker-marker-not-exist", this, { markerName: e } ); } this.model.change(() => { this.model.markers._refresh(n); }); } reconvertItem(t) { this.model.change(() => { this.model.document.differ._refreshItem(t); }); } } function xb(t, e, n) { return (i, o) => { if (n.document.isComposing && !a.isAndroid) { return; } for (let n = 0; n < o.targetRanges.length; n++) { const i = o.targetRanges[n]; const r = t.toModelRange(i); const s = kb(r, e); if (!s || s.isEqual(r)) { continue; } o.targetRanges[n] = t.toViewRange(s); } }; } class Eb { constructor() { this._consumables = new Map(); } add(t, e) { let n; if (t.is("$text") || t.is("documentFragment")) { this._consumables.set(t, true); return; } if (!this._consumables.has(t)) { n = new Sb(t); this._consumables.set(t, n); } else { n = this._consumables.get(t); } n.add(e); } test(t, e) { const n = this._consumables.get(t); if (n === undefined) { return null; } if (t.is("$text") || t.is("documentFragment")) { return n; } return n.test(e); } consume(t, e) { if (this.test(t, e)) { if (t.is("$text") || t.is("documentFragment")) { this._consumables.set(t, false); } else { this._consumables.get(t).consume(e); } return true; } return false; } revert(t, e) { const n = this._consumables.get(t); if (n !== undefined) { if (t.is("$text") || t.is("documentFragment")) { this._consumables.set(t, true); } else { n.revert(e); } } } static consumablesFromElement(t) { const e = { element: t, name: true, attributes: [], classes: [], styles: [], }; const n = t.getAttributeKeys(); for (const t of n) { if (t == "style" || t == "class") { continue; } e.attributes.push(t); } const i = t.getClassNames(); for (const t of i) { e.classes.push(t); } const o = t.getStyleNames(); for (const t of o) { e.styles.push(t); } return e; } static createFrom(t, e) { if (!e) { e = new Eb(); } if (t.is("$text")) { e.add(t); return e; } if (t.is("element")) { e.add(t, Eb.consumablesFromElement(t)); } if (t.is("documentFragment")) { e.add(t); } for (const n of t.getChildren()) { e = Eb.createFrom(n, e); } return e; } } const Db = ["attributes", "classes", "styles"]; class Sb { constructor(t) { this.element = t; this._canConsumeName = null; this._consumables = { attributes: new Map(), styles: new Map(), classes: new Map(), }; } add(t) { if (t.name) { this._canConsumeName = true; } for (const e of Db) { if (e in t) { this._add(e, t[e]); } } } test(t) { if (t.name && !this._canConsumeName) { return this._canConsumeName; } for (const e of Db) { if (e in t) { const n = this._test(e, t[e]); if (n !== true) { return n; } } } return true; } consume(t) { if (t.name) { this._canConsumeName = false; } for (const e of Db) { if (e in t) { this._consume(e, t[e]); } } } revert(t) { if (t.name) { this._canConsumeName = true; } for (const e of Db) { if (e in t) { this._revert(e, t[e]); } } } _add(t, e) { const n = rl(e); const i = this._consumables[t]; for (const e of n) { if (t === "attributes" && (e === "class" || e === "style")) { throw new N("viewconsumable-invalid-attribute", this); } i.set(e, true); if (t === "styles") { for (const t of this.element.document.stylesProcessor.getRelatedStyles( e )) { i.set(t, true); } } } } _test(t, e) { const n = rl(e); const i = this._consumables[t]; for (const e of n) { if (t === "attributes" && (e === "class" || e === "style")) { const t = e == "class" ? "classes" : "styles"; const n = this._test(t, [...this._consumables[t].keys()]); if (n !== true) { return n; } } else { const t = i.get(e); if (t === undefined) { return null; } if (!t) { return false; } } } return true; } _consume(t, e) { const n = rl(e); const i = this._consumables[t]; for (const e of n) { if (t === "attributes" && (e === "class" || e === "style")) { const t = e == "class" ? "classes" : "styles"; this._consume(t, [...this._consumables[t].keys()]); } else { i.set(e, false); if (t == "styles") { for (const t of this.element.document.stylesProcessor.getRelatedStyles( e )) { i.set(t, false); } } } } } _revert(t, e) { const n = rl(e); const i = this._consumables[t]; for (const e of n) { if (t === "attributes" && (e === "class" || e === "style")) { const t = e == "class" ? "classes" : "styles"; this._revert(t, [...this._consumables[t].keys()]); } else { const t = i.get(e); if (t === false) { i.set(e, true); } } } } } class Tb extends mt() { constructor() { super(); this._sourceDefinitions = {}; this._attributeProperties = {}; this.decorate("checkChild"); this.decorate("checkAttribute"); this.on( "checkAttribute", (t, e) => { e[0] = new Bb(e[0]); }, { priority: "highest" } ); this.on( "checkChild", (t, e) => { e[0] = new Bb(e[0]); e[1] = this.getDefinition(e[1]); }, { priority: "highest" } ); } register(t, e) { if (this._sourceDefinitions[t]) { throw new N("schema-cannot-register-item-twice", this, { itemName: t, }); } this._sourceDefinitions[t] = [Object.assign({}, e)]; this._clearCache(); } extend(t, e) { if (!this._sourceDefinitions[t]) { throw new N("schema-cannot-extend-missing-item", this, { itemName: t, }); } this._sourceDefinitions[t].push(Object.assign({}, e)); this._clearCache(); } getDefinitions() { if (!this._compiledDefinitions) { this._compile(); } return this._compiledDefinitions; } getDefinition(t) { let e; if (typeof t == "string") { e = t; } else if ("is" in t && (t.is("$text") || t.is("$textProxy"))) { e = "$text"; } else { e = t.name; } return this.getDefinitions()[e]; } isRegistered(t) { return !!this.getDefinition(t); } isBlock(t) { const e = this.getDefinition(t); return !!(e && e.isBlock); } isLimit(t) { const e = this.getDefinition(t); if (!e) { return false; } return !!(e.isLimit || e.isObject); } isObject(t) { const e = this.getDefinition(t); if (!e) { return false; } return !!(e.isObject || (e.isLimit && e.isSelectable && e.isContent)); } isInline(t) { const e = this.getDefinition(t); return !!(e && e.isInline); } isSelectable(t) { const e = this.getDefinition(t); if (!e) { return false; } return !!(e.isSelectable || e.isObject); } isContent(t) { const e = this.getDefinition(t); if (!e) { return false; } return !!(e.isContent || e.isObject); } checkChild(t, e) { if (!e) { return false; } return this._checkContextMatch(e, t); } checkAttribute(t, e) { const n = this.getDefinition(t.last); if (!n) { return false; } return n.allowAttributes.includes(e); } checkMerge(t, e) { if (t instanceof vp) { const e = t.nodeBefore; const n = t.nodeAfter; if (!(e instanceof wp)) { throw new N("schema-check-merge-no-element-before", this); } if (!(n instanceof wp)) { throw new N("schema-check-merge-no-element-after", this); } return this.checkMerge(e, n); } for (const n of e.getChildren()) { if (!this.checkChild(t, n)) { return false; } } return true; } addChildCheck(t) { this.on( "checkChild", (e, [n, i]) => { if (!i) { return; } const o = t(n, i); if (typeof o == "boolean") { e.stop(); e.return = o; } }, { priority: "high" } ); } addAttributeCheck(t) { this.on( "checkAttribute", (e, [n, i]) => { const o = t(n, i); if (typeof o == "boolean") { e.stop(); e.return = o; } }, { priority: "high" } ); } setAttributeProperties(t, e) { this._attributeProperties[t] = Object.assign( this.getAttributeProperties(t), e ); } getAttributeProperties(t) { return this._attributeProperties[t] || {}; } getLimitElement(t) { let e; if (t instanceof vp) { e = t.parent; } else { const n = t instanceof Bp ? [t] : Array.from(t.getRanges()); e = n.reduce((t, e) => { const n = e.getCommonAncestor(); if (!t) { return n; } return t.getCommonAncestor(n, { includeSelf: true }); }, null); } while (!this.isLimit(e)) { if (e.parent) { e = e.parent; } else { break; } } return e; } checkAttributeInSelection(t, e) { if (t.isCollapsed) { const n = t.getFirstPosition(); const i = [...n.getAncestors(), new kp("", t.getAttributes())]; return this.checkAttribute(i, e); } else { const n = t.getRanges(); for (const t of n) { for (const n of t) { if (this.checkAttribute(n.item, e)) { return true; } } } } return false; } *getValidRanges(t, e) { t = Gb(t); for (const n of t) { yield* this._getValidRangesForRange(n, e); } } getNearestSelectionRange(t, e = "both") { if (t.root.rootName == "$graveyard") { return null; } if (this.checkChild(t, "$text")) { return new Bp(t); } let n, i; const o = t .getAncestors() .reverse() .find((t) => this.isLimit(t)) || t.root; if (e == "both" || e == "backward") { n = new _p({ boundaries: Bp._createIn(o), startPosition: t, direction: "backward", }); } if (e == "both" || e == "forward") { i = new _p({ boundaries: Bp._createIn(o), startPosition: t }); } for (const t of Wb(n, i)) { const e = t.walker == n ? "elementEnd" : "elementStart"; const i = t.value; if (i.type == e && this.isObject(i.item)) { return Bp._createOn(i.item); } if (this.checkChild(i.nextPosition, "$text")) { return new Bp(i.nextPosition); } } return null; } findAllowedParent(t, e) { let n = t.parent; while (n) { if (this.checkChild(n, e)) { return n; } if (this.isLimit(n)) { return null; } n = n.parent; } return null; } setAllowedAttributes(t, e, n) { const i = n.model; for (const [o, r] of Object.entries(e)) { if (i.schema.checkAttribute(t, o)) { n.setAttribute(o, r, t); } } } removeDisallowedAttributes(t, e) { for (const n of t) { if (n.is("$text")) { Kb(this, n, e); } else { const t = Bp._createIn(n); const i = t.getPositions(); for (const t of i) { const n = t.nodeBefore || t.parent; Kb(this, n, e); } } } } getAttributesWithProperty(t, e, n) { const i = {}; for (const [o, r] of t.getAttributes()) { const t = this.getAttributeProperties(o); if (t[e] === undefined) { continue; } if (n === undefined || n === t[e]) { i[o] = r; } } return i; } createContext(t) { return new Bb(t); } _clearCache() { this._compiledDefinitions = null; } _compile() { const t = {}; const e = this._sourceDefinitions; const n = Object.keys(e); for (const i of n) { t[i] = Mb(e[i], i); } for (const e of n) { Ib(t, e); } for (const e of n) { Lb(t, e); } for (const e of n) { Nb(t, e); } for (const e of n) { zb(t, e); Pb(t, e); } for (const e of n) { Rb(t, e); Vb(t, e); Ob(t, e); } this._compiledDefinitions = t; } _checkContextMatch(t, e, n = e.length - 1) { const i = e.getItem(n); if (t.allowIn.includes(i.name)) { if (n == 0) { return true; } else { const t = this.getDefinition(i); return this._checkContextMatch(t, e, n - 1); } } else { return false; } } *_getValidRangesForRange(t, e) { let n = t.start; let i = t.start; for (const o of t.getItems({ shallow: true })) { if (o.is("element")) { yield* this._getValidRangesForRange(Bp._createIn(o), e); } if (!this.checkAttribute(o, e)) { if (!n.isEqual(i)) { yield new Bp(n, i); } n = vp._createAfter(o); } i = vp._createAfter(o); } if (!n.isEqual(i)) { yield new Bp(n, i); } } findOptimalInsertionRange(t, e) { const n = t.getSelectedElement(); if (n && this.isObject(n) && !this.isInline(n)) { if (e == "before" || e == "after") { return new Bp(vp._createAt(n, e)); } return Bp._createOn(n); } const i = id(t.getSelectedBlocks()); if (!i) { return new Bp(t.focus); } if (i.isEmpty) { return new Bp(vp._createAt(i, 0)); } const o = vp._createAfter(i); if (t.focus.isTouching(o)) { return new Bp(o); } return new Bp(vp._createBefore(i)); } } class Bb { constructor(t) { if (t instanceof Bb) { return t; } let e; if (typeof t == "string") { e = [t]; } else if (!Array.isArray(t)) { e = t.getAncestors({ includeSelf: true }); } else { e = t; } this._items = e.map(qb); } get length() { return this._items.length; } get last() { return this._items[this._items.length - 1]; } [Symbol.iterator]() { return this._items[Symbol.iterator](); } push(t) { const e = new Bb([t]); e._items = [...this._items, ...e._items]; return e; } getItem(t) { return this._items[t]; } *getNames() { yield* this._items.map((t) => t.name); } endsWith(t) { return Array.from(this.getNames()).join(" ").endsWith(t); } startsWith(t) { return Array.from(this.getNames()).join(" ").startsWith(t); } } function Mb(t, e) { const n = { name: e, allowIn: [], allowContentOf: [], allowWhere: [], allowAttributes: [], allowAttributesOf: [], allowChildren: [], inheritTypesFrom: [], }; Fb(t, n); jb(t, n, "allowIn"); jb(t, n, "allowContentOf"); jb(t, n, "allowWhere"); jb(t, n, "allowAttributes"); jb(t, n, "allowAttributesOf"); jb(t, n, "allowChildren"); jb(t, n, "inheritTypesFrom"); Hb(t, n); return n; } function Ib(t, e) { const n = t[e]; for (const i of n.allowChildren) { const n = t[i]; if (!n) { continue; } n.allowIn.push(e); } n.allowChildren.length = 0; } function Lb(t, e) { for (const n of t[e].allowContentOf) { if (t[n]) { const i = Ub(t, n); i.forEach((t) => { t.allowIn.push(e); }); } } delete t[e].allowContentOf; } function Nb(t, e) { for (const n of t[e].allowWhere) { const i = t[n]; if (i) { const n = i.allowIn; t[e].allowIn.push(...n); } } delete t[e].allowWhere; } function zb(t, e) { for (const n of t[e].allowAttributesOf) { const i = t[n]; if (i) { const n = i.allowAttributes; t[e].allowAttributes.push(...n); } } delete t[e].allowAttributesOf; } function Pb(t, e) { const n = t[e]; for (const e of n.inheritTypesFrom) { const i = t[e]; if (i) { const t = Object.keys(i).filter((t) => t.startsWith("is")); for (const e of t) { if (!(e in n)) { n[e] = i[e]; } } } } delete n.inheritTypesFrom; } function Rb(t, e) { const n = t[e]; const i = n.allowIn.filter((e) => t[e]); n.allowIn = Array.from(new Set(i)); } function Vb(t, e) { const n = t[e]; for (const i of n.allowIn) { const n = t[i]; n.allowChildren.push(e); } } function Ob(t, e) { const n = t[e]; n.allowAttributes = Array.from(new Set(n.allowAttributes)); } function Fb(t, e) { for (const n of t) { const t = Object.keys(n).filter((t) => t.startsWith("is")); for (const i of t) { e[i] = !!n[i]; } } } function jb(t, e, n) { for (const i of t) { const t = i[n]; if (typeof t == "string") { e[n].push(t); } else if (Array.isArray(t)) { e[n].push(...t); } } } function Hb(t, e) { for (const n of t) { const t = n.inheritAllFrom; if (t) { e.allowContentOf.push(t); e.allowWhere.push(t); e.allowAttributesOf.push(t); e.inheritTypesFrom.push(t); } } } function Ub(t, e) { const n = t[e]; return $b(t).filter((t) => t.allowIn.includes(n.name)); } function $b(t) { return Object.keys(t).map((e) => t[e]); } function qb(t) { if (typeof t == "string" || t.is("documentFragment")) { return { name: typeof t == "string" ? t : "$documentFragment", *getAttributeKeys() {}, getAttribute() {}, }; } else { return { name: t.is("element") ? t.name : "$text", *getAttributeKeys() { yield* t.getAttributeKeys(); }, getAttribute(e) { return t.getAttribute(e); }, }; } } function* Wb(t, e) { let n = false; while (!n) { n = true; if (t) { const e = t.next(); if (!e.done) { n = false; yield { walker: t, value: e.value }; } } if (e) { const t = e.next(); if (!t.done) { n = false; yield { walker: e, value: t.value }; } } } } function* Gb(t) { for (const e of t) { yield* e.getMinimalFlatRanges(); } } function Kb(t, e, n) { for (const i of e.getAttributeKeys()) { if (!t.checkAttribute(e, i)) { n.removeAttribute(i, e); } } } class Yb extends G() { constructor(t) { super(); this._splitParts = new Map(); this._cursorParents = new Map(); this._modelCursor = null; this._emptyElementsToKeep = new Set(); this.conversionApi = { ...t, consumable: null, writer: null, store: null, convertItem: (t, e) => this._convertItem(t, e), convertChildren: (t, e) => this._convertChildren(t, e), safeInsert: (t, e) => this._safeInsert(t, e), updateConversionResult: (t, e) => this._updateConversionResult(t, e), splitToAllowedParent: (t, e) => this._splitToAllowedParent(t, e), getSplitParts: (t) => this._getSplitParts(t), keepEmptyElement: (t) => this._keepEmptyElement(t), }; } convert(t, e, n = ["$root"]) { this.fire("viewCleanup", t); this._modelCursor = Zb(n, e); this.conversionApi.writer = e; this.conversionApi.consumable = Eb.createFrom(t); this.conversionApi.store = {}; const { modelRange: i } = this._convertItem(t, this._modelCursor); const o = e.createDocumentFragment(); if (i) { this._removeEmptyElements(); for (const t of Array.from( this._modelCursor.parent.getChildren() )) { e.append(t, o); } o.markers = Qb(o, e); } this._modelCursor = null; this._splitParts.clear(); this._cursorParents.clear(); this._emptyElementsToKeep.clear(); this.conversionApi.writer = null; this.conversionApi.store = null; return o; } _convertItem(t, e) { const n = { viewItem: t, modelCursor: e, modelRange: null }; if (t.is("element")) { this.fire(`element:${t.name}`, n, this.conversionApi); } else if (t.is("$text")) { this.fire("text", n, this.conversionApi); } else { this.fire("documentFragment", n, this.conversionApi); } if (n.modelRange && !(n.modelRange instanceof Bp)) { throw new N("view-conversion-dispatcher-incorrect-result", this); } return { modelRange: n.modelRange, modelCursor: n.modelCursor }; } _convertChildren(t, e) { let n = e.is("position") ? e : vp._createAt(e, 0); const i = new Bp(n); for (const e of Array.from(t.getChildren())) { const t = this._convertItem(e, n); if (t.modelRange instanceof Bp) { i.end = t.modelRange.end; n = t.modelCursor; } } return { modelRange: i, modelCursor: n }; } _safeInsert(t, e) { const n = this._splitToAllowedParent(t, e); if (!n) { return false; } this.conversionApi.writer.insert(t, n.position); return true; } _updateConversionResult(t, e) { const n = this._getSplitParts(t); const i = this.conversionApi.writer; if (!e.modelRange) { e.modelRange = i.createRange( i.createPositionBefore(t), i.createPositionAfter(n[n.length - 1]) ); } const o = this._cursorParents.get(t); if (o) { e.modelCursor = i.createPositionAt(o, 0); } else { e.modelCursor = e.modelRange.end; } } _splitToAllowedParent(t, e) { const { schema: n, writer: i } = this.conversionApi; let o = n.findAllowedParent(e, t); if (o) { if (o === e.parent) { return { position: e }; } if (this._modelCursor.parent.getAncestors().includes(o)) { o = null; } } if (!o) { if (!Gk(e, t, n)) { return null; } return { position: Kk(e, i) }; } const r = this.conversionApi.writer.split(e, o); const s = []; for (const t of r.range.getWalker()) { if (t.type == "elementEnd") { s.push(t.item); } else { const e = s.pop(); const n = t.item; this._registerSplitPair(e, n); } } const a = r.range.end.parent; this._cursorParents.set(t, a); return { position: r.position, cursorParent: a }; } _registerSplitPair(t, e) { if (!this._splitParts.has(t)) { this._splitParts.set(t, [t]); } const n = this._splitParts.get(t); this._splitParts.set(e, n); n.push(e); } _getSplitParts(t) { let e; if (!this._splitParts.has(t)) { e = [t]; } else { e = this._splitParts.get(t); } return e; } _keepEmptyElement(t) { this._emptyElementsToKeep.add(t); } _removeEmptyElements() { let t = false; for (const e of this._splitParts.keys()) { if (e.isEmpty && !this._emptyElementsToKeep.has(e)) { this.conversionApi.writer.remove(e); this._splitParts.delete(e); t = true; } } if (t) { this._removeEmptyElements(); } } } function Qb(t, e) { const n = new Set(); const i = new Map(); const o = Bp._createIn(t).getItems(); for (const t of o) { if (t.is("element", "$marker")) { n.add(t); } } for (const t of n) { const n = t.getAttribute("data-name"); const o = e.createPositionBefore(t); if (!i.has(n)) { i.set(n, new Bp(o.clone())); } else { i.get(n).end = o.clone(); } e.remove(t); } return i; } function Zb(t, e) { let n; for (const i of new Bb(t)) { const t = {}; for (const e of i.getAttributeKeys()) { t[e] = i.getAttribute(e); } const o = e.createElement(i.name, t); if (n) { e.insert(o, n); } n = vp._createAt(o, 0); } return n; } class Jb { getHtml(t) { const n = e.document.implementation.createHTMLDocument(""); const i = n.createElement("div"); i.appendChild(t); return i.innerHTML; } } class Xb { constructor(t) { this.skipComments = true; this.domParser = new DOMParser(); this.domConverter = new wg(t, { renderingMode: "data" }); this.htmlWriter = new Jb(); } toData(t) { const e = this.domConverter.viewToDom(t); return this.htmlWriter.getHtml(e); } toView(t) { const e = this._toDom(t); return this.domConverter.domToView(e, { skipComments: this.skipComments, }); } registerRawContentMatcher(t) { this.domConverter.registerRawContentMatcher(t); } useFillerType(t) { this.domConverter.blockFillerMode = t == "marked" ? "markedNbsp" : "nbsp"; } _toDom(t) { if (!t.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)) { t = `${t}`; } const e = this.domParser.parseFromString(t, "text/html"); const n = e.createDocumentFragment(); const i = e.body.childNodes; while (i.length > 0) { n.appendChild(i[0]); } return n; } } class tw extends G() { constructor(t, e) { super(); this.model = t; this.mapper = new Mp(); this.downcastDispatcher = new Np({ mapper: this.mapper, schema: t.schema, }); this.downcastDispatcher.on("insert:$text", ik(), { priority: "lowest", }); this.downcastDispatcher.on("insert", ok(), { priority: "lowest" }); this.upcastDispatcher = new Yb({ schema: t.schema }); this.viewDocument = new pm(e); this.stylesProcessor = e; this.htmlProcessor = new Xb(this.viewDocument); this.processor = this.htmlProcessor; this._viewWriter = new Im(this.viewDocument); this.upcastDispatcher.on("text", Zk(), { priority: "lowest" }); this.upcastDispatcher.on("element", Qk(), { priority: "lowest" }); this.upcastDispatcher.on("documentFragment", Qk(), { priority: "lowest", }); mt().prototype.decorate.call(this, "init"); mt().prototype.decorate.call(this, "set"); mt().prototype.decorate.call(this, "get"); mt().prototype.decorate.call(this, "toView"); mt().prototype.decorate.call(this, "toModel"); this.on( "init", () => { this.fire("ready"); }, { priority: "lowest" } ); this.on( "ready", () => { this.model.enqueueChange({ isUndoable: false }, Wk); }, { priority: "lowest" } ); } get(t = {}) { const { rootName: e = "main", trim: n = "empty" } = t; if (!this._checkIfRootsExists([e])) { throw new N("datacontroller-get-non-existent-root", this); } const i = this.model.document.getRoot(e); if (!i.isAttached()) { z("datacontroller-get-detached-root", this); } if ( n === "empty" && !this.model.hasContent(i, { ignoreWhitespaces: true }) ) { return ""; } return this.stringify(i, t); } stringify(t, e = {}) { const n = this.toView(t, e); return this.processor.toData(n); } toView(t, e = {}) { const n = this.viewDocument; const i = this._viewWriter; this.mapper.clearBindings(); const o = Bp._createIn(t); const r = new Bm(n); this.mapper.bindElements(t, r); const s = t.is("documentFragment") ? t.markers : ew(t); this.downcastDispatcher.convert(o, s, i, e); return r; } init(t) { if (this.model.document.version) { throw new N("datacontroller-init-document-not-empty", this); } let e = {}; if (typeof t === "string") { e.main = t; } else { e = t; } if (!this._checkIfRootsExists(Object.keys(e))) { throw new N("datacontroller-init-non-existent-root", this); } this.model.enqueueChange({ isUndoable: false }, (t) => { for (const n of Object.keys(e)) { const i = this.model.document.getRoot(n); t.insert(this.parse(e[n], i), i, 0); } }); return Promise.resolve(); } set(t, e = {}) { let n = {}; if (typeof t === "string") { n.main = t; } else { n = t; } if (!this._checkIfRootsExists(Object.keys(n))) { throw new N("datacontroller-set-non-existent-root", this); } this.model.enqueueChange(e.batchType || {}, (t) => { t.setSelection(null); t.removeSelectionAttribute( this.model.document.selection.getAttributeKeys() ); for (const e of Object.keys(n)) { const i = this.model.document.getRoot(e); t.remove(t.createRangeIn(i)); t.insert(this.parse(n[e], i), i, 0); } }); } parse(t, e = "$root") { const n = this.processor.toView(t); return this.toModel(n, e); } toModel(t, e = "$root") { return this.model.change((n) => this.upcastDispatcher.convert(t, n, e) ); } addStyleProcessorRules(t) { t(this.stylesProcessor); } registerRawContentMatcher(t) { if (this.processor && this.processor !== this.htmlProcessor) { this.processor.registerRawContentMatcher(t); } this.htmlProcessor.registerRawContentMatcher(t); } destroy() { this.stopListening(); } _checkIfRootsExists(t) { for (const e of t) { if (!this.model.document.getRoot(e)) { return false; } } return true; } } function ew(t) { const e = []; const n = t.root.document; if (!n) { return new Map(); } const i = Bp._createIn(t); for (const t of n.model.markers) { const n = t.getRange(); const o = n.isCollapsed; const r = n.start.isEqual(i.start) || n.end.isEqual(i.end); if (o && r) { e.push([t.name, n]); } else { const o = i.getIntersection(n); if (o) { e.push([t.name, o]); } } } e.sort(([t, e], [n, i]) => { if (e.end.compareWith(i.start) !== "after") { return 1; } else if (e.start.compareWith(i.end) !== "before") { return -1; } else { switch (e.start.compareWith(i.start)) { case "before": return 1; case "after": return -1; default: switch (e.end.compareWith(i.end)) { case "before": return 1; case "after": return -1; default: return n.localeCompare(t); } } } }); return new Map(e); } class nw { constructor(t, e) { this._helpers = new Map(); this._downcast = rl(t); this._createConversionHelpers({ name: "downcast", dispatchers: this._downcast, isDowncast: true, }); this._upcast = rl(e); this._createConversionHelpers({ name: "upcast", dispatchers: this._upcast, isDowncast: false, }); } addAlias(t, e) { const n = this._downcast.includes(e); const i = this._upcast.includes(e); if (!i && !n) { throw new N("conversion-add-alias-dispatcher-not-registered", this); } this._createConversionHelpers({ name: t, dispatchers: [e], isDowncast: n, }); } for(t) { if (!this._helpers.has(t)) { throw new N("conversion-for-unknown-group", this); } return this._helpers.get(t); } elementToElement(t) { this.for("downcast").elementToElement(t); for (const { model: e, view: n } of iw(t)) { this.for("upcast").elementToElement({ model: e, view: n, converterPriority: t.converterPriority, }); } } attributeToElement(t) { this.for("downcast").attributeToElement(t); for (const { model: e, view: n } of iw(t)) { this.for("upcast").elementToAttribute({ view: n, model: e, converterPriority: t.converterPriority, }); } } attributeToAttribute(t) { this.for("downcast").attributeToAttribute(t); for (const { model: e, view: n } of iw(t)) { this.for("upcast").attributeToAttribute({ view: n, model: e }); } } _createConversionHelpers({ name: t, dispatchers: e, isDowncast: n }) { if (this._helpers.has(t)) { throw new N("conversion-group-exists", this); } const i = n ? new nk(e) : new Yk(e); this._helpers.set(t, i); } } function* iw(t) { if (t.model.values) { for (const e of t.model.values) { const n = { key: t.model.key, value: e }; const i = t.view[e]; const o = t.upcastAlso ? t.upcastAlso[e] : undefined; yield* ow(n, i, o); } } else { yield* ow(t.model, t.view, t.upcastAlso); } } function* ow(t, e, n) { yield { model: t, view: e }; if (n) { for (const e of rl(n)) { yield { model: t, view: e }; } } } class rw { constructor(t) { this.baseVersion = t; this.isDocumentOperation = this.baseVersion !== null; this.batch = null; } _validate() {} toJSON() { const t = Object.assign({}, this); t.__className = this.constructor.className; delete t.batch; delete t.isDocumentOperation; return t; } static get className() { return "Operation"; } static fromJSON(t, e) { return new this(t.baseVersion); } } function sw(t, e) { const n = dw(e); const i = n.reduce((t, e) => t + e.offsetSize, 0); const o = t.parent; hw(t); const r = t.index; o._insertChild(r, n); uw(o, r + n.length); uw(o, r); return new Bp(t, t.getShiftedBy(i)); } function aw(t) { if (!t.isFlat) { throw new N("operation-utils-remove-range-not-flat", this); } const e = t.start.parent; hw(t.start); hw(t.end); const n = e._removeChildren(t.start.index, t.end.index - t.start.index); uw(e, t.start.index); return n; } function cw(t, e) { if (!t.isFlat) { throw new N("operation-utils-move-range-not-flat", this); } const n = aw(t); e = e._getTransformedByDeletion(t.start, t.end.offset - t.start.offset); return sw(e, n); } function lw(t, e, n) { hw(t.start); hw(t.end); for (const i of t.getItems({ shallow: true })) { const t = i.is("$textProxy") ? i.textNode : i; if (n !== null) { t._setAttribute(e, n); } else { t._removeAttribute(e); } uw(t.parent, t.index); } uw(t.end.parent, t.end.index); } function dw(t) { const e = []; function n(t) { if (typeof t == "string") { e.push(new kp(t)); } else if (t instanceof bp) { e.push(new kp(t.data, t.getAttributes())); } else if (t instanceof fp) { e.push(t); } else if (Dt(t)) { for (const e of t) { n(e); } } else { const e = t; } } n(t); for (let t = 1; t < e.length; t++) { const n = e[t]; const i = e[t - 1]; if (n instanceof kp && i instanceof kp && mw(n, i)) { e.splice(t - 1, 2, new kp(i.data + n.data, i.getAttributes())); t--; } } return e; } function uw(t, e) { const n = t.getChild(e - 1); const i = t.getChild(e); if (n && i && n.is("$text") && i.is("$text") && mw(n, i)) { const o = new kp(n.data + i.data, n.getAttributes()); t._removeChildren(e - 1, 2); t._insertChild(e - 1, o); } } function hw(t) { const e = t.textNode; const n = t.parent; if (e) { const i = t.offset - e.startOffset; const o = e.index; n._removeChildren(o, 1); const r = new kp(e.data.substr(0, i), e.getAttributes()); const s = new kp(e.data.substr(i), e.getAttributes()); n._insertChild(o, [r, s]); } } function mw(t, e) { const n = t.getAttributes(); const i = e.getAttributes(); for (const t of n) { if (t[1] !== e.getAttribute(t[0])) { return false; } i.next(); } return i.next().done; } class gw extends rw { constructor(t, e, n, i) { super(i); this.sourcePosition = t.clone(); this.sourcePosition.stickiness = "toNext"; this.howMany = e; this.targetPosition = n.clone(); this.targetPosition.stickiness = "toNone"; } get type() { if (this.targetPosition.root.rootName == "$graveyard") { return "remove"; } else if (this.sourcePosition.root.rootName == "$graveyard") { return "reinsert"; } return "move"; } get affectedSelectable() { return [ Bp._createFromPositionAndShift(this.sourcePosition, this.howMany), Bp._createFromPositionAndShift(this.targetPosition, 0), ]; } clone() { return new gw( this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion ); } getMovedRangeStart() { return this.targetPosition._getTransformedByDeletion( this.sourcePosition, this.howMany ); } getReversed() { const t = this.sourcePosition._getTransformedByInsertion( this.targetPosition, this.howMany ); return new gw( this.getMovedRangeStart(), this.howMany, t, this.baseVersion + 1 ); } _validate() { const t = this.sourcePosition.parent; const e = this.targetPosition.parent; const n = this.sourcePosition.offset; const i = this.targetPosition.offset; if (n + this.howMany > t.maxOffset) { throw new N("move-operation-nodes-do-not-exist", this); } else if (t === e && n < i && i < n + this.howMany) { throw new N("move-operation-range-into-itself", this); } else if (this.sourcePosition.root == this.targetPosition.root) { if ( Et( this.sourcePosition.getParentPath(), this.targetPosition.getParentPath() ) == "prefix" ) { const t = this.sourcePosition.path.length - 1; if ( this.targetPosition.path[t] >= n && this.targetPosition.path[t] < n + this.howMany ) { throw new N("move-operation-node-into-itself", this); } } } } _execute() { cw( Bp._createFromPositionAndShift(this.sourcePosition, this.howMany), this.targetPosition ); } toJSON() { const t = super.toJSON(); t.sourcePosition = this.sourcePosition.toJSON(); t.targetPosition = this.targetPosition.toJSON(); return t; } static get className() { return "MoveOperation"; } static fromJSON(t, e) { const n = vp.fromJSON(t.sourcePosition, e); const i = vp.fromJSON(t.targetPosition, e); return new this(n, t.howMany, i, t.baseVersion); } } class fw extends rw { constructor(t, e, n) { super(n); this.position = t.clone(); this.position.stickiness = "toNone"; this.nodes = new pp(dw(e)); this.shouldReceiveAttributes = false; } get type() { return "insert"; } get howMany() { return this.nodes.maxOffset; } get affectedSelectable() { return this.position.clone(); } clone() { const t = new pp([...this.nodes].map((t) => t._clone(true))); const e = new fw(this.position, t, this.baseVersion); e.shouldReceiveAttributes = this.shouldReceiveAttributes; return e; } getReversed() { const t = this.position.root.document.graveyard; const e = new vp(t, [0]); return new gw( this.position, this.nodes.maxOffset, e, this.baseVersion + 1 ); } _validate() { const t = this.position.parent; if (!t || t.maxOffset < this.position.offset) { throw new N("insert-operation-position-invalid", this); } } _execute() { const t = this.nodes; this.nodes = new pp([...t].map((t) => t._clone(true))); sw(this.position, t); } toJSON() { const t = super.toJSON(); t.position = this.position.toJSON(); t.nodes = this.nodes.toJSON(); return t; } static get className() { return "InsertOperation"; } static fromJSON(t, e) { const n = []; for (const e of t.nodes) { if (e.name) { n.push(wp.fromJSON(e)); } else { n.push(kp.fromJSON(e)); } } const i = new fw(vp.fromJSON(t.position, e), n, t.baseVersion); i.shouldReceiveAttributes = t.shouldReceiveAttributes; return i; } } class pw extends rw { constructor(t, e, n, i, o) { super(o); this.splitPosition = t.clone(); this.splitPosition.stickiness = "toNext"; this.howMany = e; this.insertionPosition = n; this.graveyardPosition = i ? i.clone() : null; if (this.graveyardPosition) { this.graveyardPosition.stickiness = "toNext"; } } get type() { return "split"; } get moveTargetPosition() { const t = this.insertionPosition.path.slice(); t.push(0); return new vp(this.insertionPosition.root, t); } get movedRange() { const t = this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY); return new Bp(this.splitPosition, t); } get affectedSelectable() { const t = [ Bp._createFromPositionAndShift(this.splitPosition, 0), Bp._createFromPositionAndShift(this.insertionPosition, 0), ]; if (this.graveyardPosition) { t.push(Bp._createFromPositionAndShift(this.graveyardPosition, 0)); } return t; } clone() { return new pw( this.splitPosition, this.howMany, this.insertionPosition, this.graveyardPosition, this.baseVersion ); } getReversed() { const t = this.splitPosition.root.document.graveyard; const e = new vp(t, [0]); return new kw( this.moveTargetPosition, this.howMany, this.splitPosition, e, this.baseVersion + 1 ); } _validate() { const t = this.splitPosition.parent; const e = this.splitPosition.offset; if (!t || t.maxOffset < e) { throw new N("split-operation-position-invalid", this); } else if (!t.parent) { throw new N("split-operation-split-in-root", this); } else if (this.howMany != t.maxOffset - this.splitPosition.offset) { throw new N("split-operation-how-many-invalid", this); } else if ( this.graveyardPosition && !this.graveyardPosition.nodeAfter ) { throw new N("split-operation-graveyard-position-invalid", this); } } _execute() { const t = this.splitPosition.parent; if (this.graveyardPosition) { cw( Bp._createFromPositionAndShift(this.graveyardPosition, 1), this.insertionPosition ); } else { const e = t._clone(); sw(this.insertionPosition, e); } const e = new Bp( vp._createAt(t, this.splitPosition.offset), vp._createAt(t, t.maxOffset) ); cw(e, this.moveTargetPosition); } toJSON() { const t = super.toJSON(); t.splitPosition = this.splitPosition.toJSON(); t.insertionPosition = this.insertionPosition.toJSON(); if (this.graveyardPosition) { t.graveyardPosition = this.graveyardPosition.toJSON(); } return t; } static get className() { return "SplitOperation"; } static getInsertionPosition(t) { const e = t.path.slice(0, -1); e[e.length - 1]++; return new vp(t.root, e, "toPrevious"); } static fromJSON(t, e) { const n = vp.fromJSON(t.splitPosition, e); const i = vp.fromJSON(t.insertionPosition, e); const o = t.graveyardPosition ? vp.fromJSON(t.graveyardPosition, e) : null; return new this(n, t.howMany, i, o, t.baseVersion); } } class kw extends rw { constructor(t, e, n, i, o) { super(o); this.sourcePosition = t.clone(); this.sourcePosition.stickiness = "toPrevious"; this.howMany = e; this.targetPosition = n.clone(); this.targetPosition.stickiness = "toNext"; this.graveyardPosition = i.clone(); } get type() { return "merge"; } get deletionPosition() { return new vp( this.sourcePosition.root, this.sourcePosition.path.slice(0, -1) ); } get movedRange() { const t = this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY); return new Bp(this.sourcePosition, t); } get affectedSelectable() { const t = this.sourcePosition.parent; return [ Bp._createOn(t), Bp._createFromPositionAndShift(this.targetPosition, 0), Bp._createFromPositionAndShift(this.graveyardPosition, 0), ]; } clone() { return new kw( this.sourcePosition, this.howMany, this.targetPosition, this.graveyardPosition, this.baseVersion ); } getReversed() { const t = this.targetPosition._getTransformedByMergeOperation(this); const e = this.sourcePosition.path.slice(0, -1); const n = new vp( this.sourcePosition.root, e )._getTransformedByMergeOperation(this); return new pw( t, this.howMany, n, this.graveyardPosition, this.baseVersion + 1 ); } _validate() { const t = this.sourcePosition.parent; const e = this.targetPosition.parent; if (!t.parent) { throw new N("merge-operation-source-position-invalid", this); } else if (!e.parent) { throw new N("merge-operation-target-position-invalid", this); } else if (this.howMany != t.maxOffset) { throw new N("merge-operation-how-many-invalid", this); } } _execute() { const t = this.sourcePosition.parent; const e = Bp._createIn(t); cw(e, this.targetPosition); cw(Bp._createOn(t), this.graveyardPosition); } toJSON() { const t = super.toJSON(); t.sourcePosition = t.sourcePosition.toJSON(); t.targetPosition = t.targetPosition.toJSON(); t.graveyardPosition = t.graveyardPosition.toJSON(); return t; } static get className() { return "MergeOperation"; } static fromJSON(t, e) { const n = vp.fromJSON(t.sourcePosition, e); const i = vp.fromJSON(t.targetPosition, e); const o = vp.fromJSON(t.graveyardPosition, e); return new this(n, t.howMany, i, o, t.baseVersion); } } class bw extends rw { constructor(t, e, n, i, o, r) { super(r); this.name = t; this.oldRange = e ? e.clone() : null; this.newRange = n ? n.clone() : null; this.affectsData = o; this._markers = i; } get type() { return "marker"; } get affectedSelectable() { const t = []; if (this.oldRange) { t.push(this.oldRange.clone()); } if (this.newRange) { if (this.oldRange) { t.push(...this.newRange.getDifference(this.oldRange)); } else { t.push(this.newRange.clone()); } } return t; } clone() { return new bw( this.name, this.oldRange, this.newRange, this._markers, this.affectsData, this.baseVersion ); } getReversed() { return new bw( this.name, this.newRange, this.oldRange, this._markers, this.affectsData, this.baseVersion + 1 ); } _execute() { if (this.newRange) { this._markers._set( this.name, this.newRange, true, this.affectsData ); } else { this._markers._remove(this.name); } } toJSON() { const t = super.toJSON(); if (this.oldRange) { t.oldRange = this.oldRange.toJSON(); } if (this.newRange) { t.newRange = this.newRange.toJSON(); } delete t._markers; return t; } static get className() { return "MarkerOperation"; } static fromJSON(t, e) { return new bw( t.name, t.oldRange ? Bp.fromJSON(t.oldRange, e) : null, t.newRange ? Bp.fromJSON(t.newRange, e) : null, e.model.markers, t.affectsData, t.baseVersion ); } } function ww(t, e) { return Qf(t, e); } const Aw = ww; class _w extends rw { constructor(t, e, n, i, o) { super(o); this.range = t.clone(); this.key = e; this.oldValue = n === undefined ? null : n; this.newValue = i === undefined ? null : i; } get type() { if (this.oldValue === null) { return "addAttribute"; } else if (this.newValue === null) { return "removeAttribute"; } else { return "changeAttribute"; } } get affectedSelectable() { return this.range.clone(); } clone() { return new _w( this.range, this.key, this.oldValue, this.newValue, this.baseVersion ); } getReversed() { return new _w( this.range, this.key, this.newValue, this.oldValue, this.baseVersion + 1 ); } toJSON() { const t = super.toJSON(); t.range = this.range.toJSON(); return t; } _validate() { if (!this.range.isFlat) { throw new N("attribute-operation-range-not-flat", this); } for (const t of this.range.getItems({ shallow: true })) { if ( this.oldValue !== null && !Aw(t.getAttribute(this.key), this.oldValue) ) { throw new N("attribute-operation-wrong-old-value", this, { item: t, key: this.key, value: this.oldValue, }); } if ( this.oldValue === null && this.newValue !== null && t.hasAttribute(this.key) ) { throw new N("attribute-operation-attribute-exists", this, { node: t, key: this.key, }); } } } _execute() { if (!Aw(this.oldValue, this.newValue)) { lw(this.range, this.key, this.newValue); } } static get className() { return "AttributeOperation"; } static fromJSON(t, e) { return new _w( Bp.fromJSON(t.range, e), t.key, t.oldValue, t.newValue, t.baseVersion ); } } class Cw extends rw { get type() { return "noop"; } get affectedSelectable() { return null; } clone() { return new Cw(this.baseVersion); } getReversed() { return new Cw(this.baseVersion + 1); } _execute() {} static get className() { return "NoOperation"; } } class vw extends rw { constructor(t, e, n, i) { super(i); this.position = t; this.position.stickiness = "toNext"; this.oldName = e; this.newName = n; } get type() { return "rename"; } get affectedSelectable() { return this.position.nodeAfter; } clone() { return new vw( this.position.clone(), this.oldName, this.newName, this.baseVersion ); } getReversed() { return new vw( this.position.clone(), this.newName, this.oldName, this.baseVersion + 1 ); } _validate() { const t = this.position.nodeAfter; if (!(t instanceof wp)) { throw new N("rename-operation-wrong-position", this); } else if (t.name !== this.oldName) { throw new N("rename-operation-wrong-name", this); } } _execute() { const t = this.position.nodeAfter; t.name = this.newName; } toJSON() { const t = super.toJSON(); t.position = this.position.toJSON(); return t; } static get className() { return "RenameOperation"; } static fromJSON(t, e) { return new vw( vp.fromJSON(t.position, e), t.oldName, t.newName, t.baseVersion ); } } class yw extends rw { constructor(t, e, n, i, o) { super(o); this.root = t; this.key = e; this.oldValue = n === undefined ? null : n; this.newValue = i === undefined ? null : i; } get type() { if (this.oldValue === null) { return "addRootAttribute"; } else if (this.newValue === null) { return "removeRootAttribute"; } else { return "changeRootAttribute"; } } get affectedSelectable() { return this.root; } clone() { return new yw( this.root, this.key, this.oldValue, this.newValue, this.baseVersion ); } getReversed() { return new yw( this.root, this.key, this.newValue, this.oldValue, this.baseVersion + 1 ); } _validate() { if (this.root != this.root.root || this.root.is("documentFragment")) { throw new N("rootattribute-operation-not-a-root", this, { root: this.root, key: this.key, }); } if ( this.oldValue !== null && this.root.getAttribute(this.key) !== this.oldValue ) { throw new N("rootattribute-operation-wrong-old-value", this, { root: this.root, key: this.key, }); } if ( this.oldValue === null && this.newValue !== null && this.root.hasAttribute(this.key) ) { throw new N("rootattribute-operation-attribute-exists", this, { root: this.root, key: this.key, }); } } _execute() { if (this.newValue !== null) { this.root._setAttribute(this.key, this.newValue); } else { this.root._removeAttribute(this.key); } } toJSON() { const t = super.toJSON(); t.root = this.root.toJSON(); return t; } static get className() { return "RootAttributeOperation"; } static fromJSON(t, e) { if (!e.getRoot(t.root)) { throw new N("rootattribute-operation-fromjson-no-root", this, { rootName: t.root, }); } return new yw( e.getRoot(t.root), t.key, t.oldValue, t.newValue, t.baseVersion ); } } class xw extends rw { constructor(t, e, n, i, o) { super(o); this.rootName = t; this.elementName = e; this.isAdd = n; this._document = i; if (!this._document.getRoot(this.rootName)) { const t = this._document.createRoot( this.elementName, this.rootName ); t._isAttached = false; } } get type() { return this.isAdd ? "addRoot" : "detachRoot"; } get affectedSelectable() { return this._document.getRoot(this.rootName); } clone() { return new xw( this.rootName, this.elementName, this.isAdd, this._document, this.baseVersion ); } getReversed() { return new xw( this.rootName, this.elementName, !this.isAdd, this._document, this.baseVersion + 1 ); } _execute() { this._document.getRoot(this.rootName)._isAttached = this.isAdd; } toJSON() { const t = super.toJSON(); delete t._document; return t; } static get className() { return "RootOperation"; } static fromJSON(t, e) { return new xw(t.rootName, t.elementName, t.isAdd, e, t.baseVersion); } } const Ew = {}; Ew[_w.className] = _w; Ew[fw.className] = fw; Ew[bw.className] = bw; Ew[gw.className] = gw; Ew[Cw.className] = Cw; Ew[rw.className] = rw; Ew[vw.className] = vw; Ew[yw.className] = yw; Ew[xw.className] = xw; Ew[pw.className] = pw; Ew[kw.className] = kw; class Dw { static fromJSON(t, e) { return Ew[t.__className].fromJSON(t, e); } } const Sw = new Map(); function Tw(t, e, n) { let i = Sw.get(t); if (!i) { i = new Map(); Sw.set(t, i); } i.set(e, n); } function Bw(t, e) { const n = Sw.get(t); if (n && n.has(e)) { return n.get(e); } return Mw; } function Mw(t) { return [t]; } function Iw(t, e, n = {}) { const i = Bw(t.constructor, e.constructor); try { t = t.clone(); return i(t, e, n); } catch (t) { throw t; } } function Lw(t, e, n) { t = t.slice(); e = e.slice(); const i = new Nw(n.document, n.useRelations, n.forceWeakRemove); i.setOriginalOperations(t); i.setOriginalOperations(e); const o = i.originalOperations; if (t.length == 0 || e.length == 0) { return { operationsA: t, operationsB: e, originalOperations: o }; } const r = new WeakMap(); for (const e of t) { r.set(e, 0); } const s = { nextBaseVersionA: t[t.length - 1].baseVersion + 1, nextBaseVersionB: e[e.length - 1].baseVersion + 1, originalOperationsACount: t.length, originalOperationsBCount: e.length, }; let a = 0; while (a < t.length) { const n = t[a]; const o = r.get(n); if (o == e.length) { a++; continue; } const s = e[o]; const c = Iw(n, s, i.getContext(n, s, true)); const l = Iw(s, n, i.getContext(s, n, false)); i.updateRelation(n, s); i.setOriginalOperations(c, n); i.setOriginalOperations(l, s); for (const t of c) { r.set(t, o + l.length); } t.splice(a, 1, ...c); e.splice(o, 1, ...l); } if (n.padWithNoOps) { const n = t.length - s.originalOperationsACount; const i = e.length - s.originalOperationsBCount; Pw(t, i - n); Pw(e, n - i); } zw(t, s.nextBaseVersionB); zw(e, s.nextBaseVersionA); return { operationsA: t, operationsB: e, originalOperations: o }; } class Nw { constructor(t, e, n = false) { this.originalOperations = new Map(); this._history = t.history; this._useRelations = e; this._forceWeakRemove = !!n; this._relations = new Map(); } setOriginalOperations(t, e = null) { const n = e ? this.originalOperations.get(e) : null; for (const e of t) { this.originalOperations.set(e, n || e); } } updateRelation(t, e) { if (t instanceof gw) { if (e instanceof kw) { if ( t.targetPosition.isEqual(e.sourcePosition) || e.movedRange.containsPosition(t.targetPosition) ) { this._setRelation(t, e, "insertAtSource"); } else if (t.targetPosition.isEqual(e.deletionPosition)) { this._setRelation(t, e, "insertBetween"); } else if (t.targetPosition.isAfter(e.sourcePosition)) { this._setRelation(t, e, "moveTargetAfter"); } } else if (e instanceof gw) { if ( t.targetPosition.isEqual(e.sourcePosition) || t.targetPosition.isBefore(e.sourcePosition) ) { this._setRelation(t, e, "insertBefore"); } else { this._setRelation(t, e, "insertAfter"); } } } else if (t instanceof pw) { if (e instanceof kw) { if (t.splitPosition.isBefore(e.sourcePosition)) { this._setRelation(t, e, "splitBefore"); } } else if (e instanceof gw) { if ( t.splitPosition.isEqual(e.sourcePosition) || t.splitPosition.isBefore(e.sourcePosition) ) { this._setRelation(t, e, "splitBefore"); } else { const n = Bp._createFromPositionAndShift( e.sourcePosition, e.howMany ); if ( t.splitPosition.hasSameParentAs(e.sourcePosition) && n.containsPosition(t.splitPosition) ) { const i = n.end.offset - t.splitPosition.offset; const o = t.splitPosition.offset - n.start.offset; this._setRelation(t, e, { howMany: i, offset: o }); } } } } else if (t instanceof kw) { if (e instanceof kw) { if (!t.targetPosition.isEqual(e.sourcePosition)) { this._setRelation(t, e, "mergeTargetNotMoved"); } if (t.sourcePosition.isEqual(e.targetPosition)) { this._setRelation(t, e, "mergeSourceNotMoved"); } if (t.sourcePosition.isEqual(e.sourcePosition)) { this._setRelation(t, e, "mergeSameElement"); } } else if (e instanceof pw) { if (t.sourcePosition.isEqual(e.splitPosition)) { this._setRelation(t, e, "splitAtSource"); } } else if (e instanceof gw && e.howMany > 0) { if ( t.sourcePosition.isEqual( e.sourcePosition.getShiftedBy(e.howMany) ) ) { this._setRelation(t, e, "mergeSourceAffected"); } if (t.targetPosition.isEqual(e.sourcePosition)) { this._setRelation(t, e, "mergeTargetWasBefore"); } } } else if (t instanceof bw) { const n = t.newRange; if (!n) { return; } if (e instanceof gw) { const i = Bp._createFromPositionAndShift( e.sourcePosition, e.howMany ); const o = i.containsPosition(n.start) || i.start.isEqual(n.start); const r = i.containsPosition(n.end) || i.end.isEqual(n.end); if ((o || r) && !i.containsRange(n)) { this._setRelation(t, e, { side: o ? "left" : "right", path: o ? n.start.path.slice() : n.end.path.slice(), }); } } else if (e instanceof kw) { const i = n.start.isEqual(e.targetPosition); const o = n.start.isEqual(e.deletionPosition); const r = n.end.isEqual(e.deletionPosition); const s = n.end.isEqual(e.sourcePosition); if (i || o || r || s) { this._setRelation(t, e, { wasInLeftElement: i, wasStartBeforeMergedElement: o, wasEndBeforeMergedElement: r, wasInRightElement: s, }); } } } } getContext(t, e, n) { return { aIsStrong: n, aWasUndone: this._wasUndone(t), bWasUndone: this._wasUndone(e), abRelation: this._useRelations ? this._getRelation(t, e) : null, baRelation: this._useRelations ? this._getRelation(e, t) : null, forceWeakRemove: this._forceWeakRemove, }; } _wasUndone(t) { const e = this.originalOperations.get(t); return e.wasUndone || this._history.isUndoneOperation(e); } _getRelation(t, e) { const n = this.originalOperations.get(e); const i = this._history.getUndoneOperation(n); if (!i) { return null; } const o = this.originalOperations.get(t); const r = this._relations.get(o); if (r) { return r.get(i) || null; } return null; } _setRelation(t, e, n) { const i = this.originalOperations.get(t); const o = this.originalOperations.get(e); let r = this._relations.get(i); if (!r) { r = new Map(); this._relations.set(i, r); } r.set(o, n); } } function zw(t, e) { for (const n of t) { n.baseVersion = e++; } } function Pw(t, e) { for (let n = 0; n < e; n++) { t.push(new Cw(0)); } } Tw(_w, _w, (t, e, n) => { if (t.key === e.key && t.range.start.hasSameParentAs(e.range.start)) { const i = t.range .getDifference(e.range) .map((e) => new _w(e, t.key, t.oldValue, t.newValue, 0)); const o = t.range.getIntersection(e.range); if (o) { if (n.aIsStrong) { i.push(new _w(o, e.key, e.newValue, t.newValue, 0)); } } if (i.length == 0) { return [new Cw(0)]; } return i; } else { return [t]; } }); Tw(_w, fw, (t, e) => { if ( t.range.start.hasSameParentAs(e.position) && t.range.containsPosition(e.position) ) { const n = t.range._getTransformedByInsertion( e.position, e.howMany, !e.shouldReceiveAttributes ); const i = n.map( (e) => new _w(e, t.key, t.oldValue, t.newValue, t.baseVersion) ); if (e.shouldReceiveAttributes) { const n = Rw(e, t.key, t.oldValue); if (n) { i.unshift(n); } } return i; } t.range = t.range._getTransformedByInsertion( e.position, e.howMany, false )[0]; return [t]; }); function Rw(t, e, n) { const i = t.nodes; const o = i.getNode(0).getAttribute(e); if (o == n) { return null; } const r = new Bp(t.position, t.position.getShiftedBy(t.howMany)); return new _w(r, e, o, n, 0); } Tw(_w, kw, (t, e) => { const n = []; if (t.range.start.hasSameParentAs(e.deletionPosition)) { if ( t.range.containsPosition(e.deletionPosition) || t.range.start.isEqual(e.deletionPosition) ) { n.push(Bp._createFromPositionAndShift(e.graveyardPosition, 1)); } } const i = t.range._getTransformedByMergeOperation(e); if (!i.isCollapsed) { n.push(i); } return n.map( (e) => new _w(e, t.key, t.oldValue, t.newValue, t.baseVersion) ); }); Tw(_w, gw, (t, e) => { const n = Vw(t.range, e); return n.map( (e) => new _w(e, t.key, t.oldValue, t.newValue, t.baseVersion) ); }); function Vw(t, e) { const n = Bp._createFromPositionAndShift(e.sourcePosition, e.howMany); let i = null; let o = []; if (n.containsRange(t, true)) { i = t; } else if (t.start.hasSameParentAs(n.start)) { o = t.getDifference(n); i = t.getIntersection(n); } else { o = [t]; } const r = []; for (let t of o) { t = t._getTransformedByDeletion(e.sourcePosition, e.howMany); const n = e.getMovedRangeStart(); const i = t.start.hasSameParentAs(n); const o = t._getTransformedByInsertion(n, e.howMany, i); r.push(...o); } if (i) { r.push( i._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany, false )[0] ); } return r; } Tw(_w, pw, (t, e) => { if (t.range.end.isEqual(e.insertionPosition)) { if (!e.graveyardPosition) { t.range.end.offset++; } return [t]; } if ( t.range.start.hasSameParentAs(e.splitPosition) && t.range.containsPosition(e.splitPosition) ) { const n = t.clone(); n.range = new Bp( e.moveTargetPosition.clone(), t.range.end._getCombined(e.splitPosition, e.moveTargetPosition) ); t.range.end = e.splitPosition.clone(); t.range.end.stickiness = "toPrevious"; return [t, n]; } t.range = t.range._getTransformedBySplitOperation(e); return [t]; }); Tw(fw, _w, (t, e) => { const n = [t]; if ( t.shouldReceiveAttributes && t.position.hasSameParentAs(e.range.start) && e.range.containsPosition(t.position) ) { const i = Rw(t, e.key, e.newValue); if (i) { n.push(i); } } return n; }); Tw(fw, fw, (t, e, n) => { if (t.position.isEqual(e.position) && n.aIsStrong) { return [t]; } t.position = t.position._getTransformedByInsertOperation(e); return [t]; }); Tw(fw, gw, (t, e) => { t.position = t.position._getTransformedByMoveOperation(e); return [t]; }); Tw(fw, pw, (t, e) => { t.position = t.position._getTransformedBySplitOperation(e); return [t]; }); Tw(fw, kw, (t, e) => { t.position = t.position._getTransformedByMergeOperation(e); return [t]; }); Tw(bw, fw, (t, e) => { if (t.oldRange) { t.oldRange = t.oldRange._getTransformedByInsertOperation(e)[0]; } if (t.newRange) { t.newRange = t.newRange._getTransformedByInsertOperation(e)[0]; } return [t]; }); Tw(bw, bw, (t, e, n) => { if (t.name == e.name) { if (n.aIsStrong) { t.oldRange = e.newRange ? e.newRange.clone() : null; } else { return [new Cw(0)]; } } return [t]; }); Tw(bw, kw, (t, e) => { if (t.oldRange) { t.oldRange = t.oldRange._getTransformedByMergeOperation(e); } if (t.newRange) { t.newRange = t.newRange._getTransformedByMergeOperation(e); } return [t]; }); Tw(bw, gw, (t, e, n) => { if (t.oldRange) { t.oldRange = Bp._createFromRanges( t.oldRange._getTransformedByMoveOperation(e) ); } if (t.newRange) { if (n.abRelation) { const i = Bp._createFromRanges( t.newRange._getTransformedByMoveOperation(e) ); if ( n.abRelation.side == "left" && e.targetPosition.isEqual(t.newRange.start) ) { t.newRange.end = i.end; t.newRange.start.path = n.abRelation.path; return [t]; } else if ( n.abRelation.side == "right" && e.targetPosition.isEqual(t.newRange.end) ) { t.newRange.start = i.start; t.newRange.end.path = n.abRelation.path; return [t]; } } t.newRange = Bp._createFromRanges( t.newRange._getTransformedByMoveOperation(e) ); } return [t]; }); Tw(bw, pw, (t, e, n) => { if (t.oldRange) { t.oldRange = t.oldRange._getTransformedBySplitOperation(e); } if (t.newRange) { if (n.abRelation) { const i = t.newRange._getTransformedBySplitOperation(e); if ( t.newRange.start.isEqual(e.splitPosition) && n.abRelation.wasStartBeforeMergedElement ) { t.newRange.start = vp._createAt(e.insertionPosition); } else if ( t.newRange.start.isEqual(e.splitPosition) && !n.abRelation.wasInLeftElement ) { t.newRange.start = vp._createAt(e.moveTargetPosition); } if ( t.newRange.end.isEqual(e.splitPosition) && n.abRelation.wasInRightElement ) { t.newRange.end = vp._createAt(e.moveTargetPosition); } else if ( t.newRange.end.isEqual(e.splitPosition) && n.abRelation.wasEndBeforeMergedElement ) { t.newRange.end = vp._createAt(e.insertionPosition); } else { t.newRange.end = i.end; } return [t]; } t.newRange = t.newRange._getTransformedBySplitOperation(e); } return [t]; }); Tw(kw, fw, (t, e) => { if (t.sourcePosition.hasSameParentAs(e.position)) { t.howMany += e.howMany; } t.sourcePosition = t.sourcePosition._getTransformedByInsertOperation(e); t.targetPosition = t.targetPosition._getTransformedByInsertOperation(e); return [t]; }); Tw(kw, kw, (t, e, n) => { if ( t.sourcePosition.isEqual(e.sourcePosition) && t.targetPosition.isEqual(e.targetPosition) ) { if (!n.bWasUndone) { return [new Cw(0)]; } else { const n = e.graveyardPosition.path.slice(); n.push(0); t.sourcePosition = new vp(e.graveyardPosition.root, n); t.howMany = 0; return [t]; } } if ( t.sourcePosition.isEqual(e.sourcePosition) && !t.targetPosition.isEqual(e.targetPosition) && !n.bWasUndone && n.abRelation != "splitAtSource" ) { const i = t.targetPosition.root.rootName == "$graveyard"; const o = e.targetPosition.root.rootName == "$graveyard"; const r = i && !o; const s = o && !i; const a = s || (!r && n.aIsStrong); if (a) { const n = e.targetPosition._getTransformedByMergeOperation(e); const i = t.targetPosition._getTransformedByMergeOperation(e); return [new gw(n, t.howMany, i, 0)]; } else { return [new Cw(0)]; } } if (t.sourcePosition.hasSameParentAs(e.targetPosition)) { t.howMany += e.howMany; } t.sourcePosition = t.sourcePosition._getTransformedByMergeOperation(e); t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e); if (!t.graveyardPosition.isEqual(e.graveyardPosition) || !n.aIsStrong) { t.graveyardPosition = t.graveyardPosition._getTransformedByMergeOperation(e); } return [t]; }); Tw(kw, gw, (t, e, n) => { const i = Bp._createFromPositionAndShift(e.sourcePosition, e.howMany); if (e.type == "remove" && !n.bWasUndone && !n.forceWeakRemove) { if ( t.deletionPosition.hasSameParentAs(e.sourcePosition) && i.containsPosition(t.sourcePosition) ) { return [new Cw(0)]; } } if ( e.sourcePosition.getShiftedBy(e.howMany).isEqual(t.sourcePosition) ) { t.sourcePosition.stickiness = "toNone"; } else if ( e.targetPosition.isEqual(t.sourcePosition) && n.abRelation == "mergeSourceAffected" ) { t.sourcePosition.stickiness = "toNext"; } else if (e.sourcePosition.isEqual(t.targetPosition)) { t.targetPosition.stickiness = "toNone"; t.howMany -= e.howMany; } else if ( e.targetPosition.isEqual(t.targetPosition) && n.abRelation == "mergeTargetWasBefore" ) { t.targetPosition.stickiness = "toPrevious"; t.howMany += e.howMany; } else { if (t.sourcePosition.hasSameParentAs(e.targetPosition)) { t.howMany += e.howMany; } if (t.sourcePosition.hasSameParentAs(e.sourcePosition)) { t.howMany -= e.howMany; } } t.sourcePosition = t.sourcePosition._getTransformedByMoveOperation(e); t.targetPosition = t.targetPosition._getTransformedByMoveOperation(e); t.sourcePosition.stickiness = "toPrevious"; t.targetPosition.stickiness = "toNext"; if (!t.graveyardPosition.isEqual(e.targetPosition)) { t.graveyardPosition = t.graveyardPosition._getTransformedByMoveOperation(e); } return [t]; }); Tw(kw, pw, (t, e, n) => { if (e.graveyardPosition) { t.graveyardPosition = t.graveyardPosition._getTransformedByDeletion( e.graveyardPosition, 1 ); if (t.deletionPosition.isEqual(e.graveyardPosition)) { t.howMany = e.howMany; } } if (t.targetPosition.isEqual(e.splitPosition)) { const i = e.howMany != 0; const o = e.graveyardPosition && t.deletionPosition.isEqual(e.graveyardPosition); if (i || o || n.abRelation == "mergeTargetNotMoved") { t.sourcePosition = t.sourcePosition._getTransformedBySplitOperation(e); return [t]; } } if (t.sourcePosition.isEqual(e.splitPosition)) { if (n.abRelation == "mergeSourceNotMoved") { t.howMany = 0; t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e); return [t]; } if ( n.abRelation == "mergeSameElement" || t.sourcePosition.offset > 0 ) { t.sourcePosition = e.moveTargetPosition.clone(); t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e); return [t]; } } if (t.sourcePosition.hasSameParentAs(e.splitPosition)) { t.howMany = e.splitPosition.offset; } t.sourcePosition = t.sourcePosition._getTransformedBySplitOperation(e); t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e); return [t]; }); Tw(gw, fw, (t, e) => { const n = Bp._createFromPositionAndShift(t.sourcePosition, t.howMany); const i = n._getTransformedByInsertOperation(e, false)[0]; t.sourcePosition = i.start; t.howMany = i.end.offset - i.start.offset; if (!t.targetPosition.isEqual(e.position)) { t.targetPosition = t.targetPosition._getTransformedByInsertOperation(e); } return [t]; }); Tw(gw, gw, (t, e, n) => { const i = Bp._createFromPositionAndShift(t.sourcePosition, t.howMany); const o = Bp._createFromPositionAndShift(e.sourcePosition, e.howMany); let r = n.aIsStrong; let s = !n.aIsStrong; if (n.abRelation == "insertBefore" || n.baRelation == "insertAfter") { s = true; } else if ( n.abRelation == "insertAfter" || n.baRelation == "insertBefore" ) { s = false; } let a; if (t.targetPosition.isEqual(e.targetPosition) && s) { a = t.targetPosition._getTransformedByDeletion( e.sourcePosition, e.howMany ); } else { a = t.targetPosition._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany ); } if (Ow(t, e) && Ow(e, t)) { return [e.getReversed()]; } const c = i.containsPosition(e.targetPosition); if (c && i.containsRange(o, true)) { i.start = i.start._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany ); i.end = i.end._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany ); return Fw([i], a); } const l = o.containsPosition(t.targetPosition); if (l && o.containsRange(i, true)) { i.start = i.start._getCombined( e.sourcePosition, e.getMovedRangeStart() ); i.end = i.end._getCombined(e.sourcePosition, e.getMovedRangeStart()); return Fw([i], a); } const d = Et( t.sourcePosition.getParentPath(), e.sourcePosition.getParentPath() ); if (d == "prefix" || d == "extension") { i.start = i.start._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany ); i.end = i.end._getTransformedByMove( e.sourcePosition, e.targetPosition, e.howMany ); return Fw([i], a); } if ( t.type == "remove" && e.type != "remove" && !n.aWasUndone && !n.forceWeakRemove ) { r = true; } else if ( t.type != "remove" && e.type == "remove" && !n.bWasUndone && !n.forceWeakRemove ) { r = false; } const u = []; const h = i.getDifference(o); for (const t of h) { t.start = t.start._getTransformedByDeletion( e.sourcePosition, e.howMany ); t.end = t.end._getTransformedByDeletion(e.sourcePosition, e.howMany); const n = Et( t.start.getParentPath(), e.getMovedRangeStart().getParentPath() ) == "same"; const i = t._getTransformedByInsertion( e.getMovedRangeStart(), e.howMany, n ); u.push(...i); } const m = i.getIntersection(o); if (m !== null && r) { m.start = m.start._getCombined( e.sourcePosition, e.getMovedRangeStart() ); m.end = m.end._getCombined(e.sourcePosition, e.getMovedRangeStart()); if (u.length === 0) { u.push(m); } else if (u.length == 1) { if (o.start.isBefore(i.start) || o.start.isEqual(i.start)) { u.unshift(m); } else { u.push(m); } } else { u.splice(1, 0, m); } } if (u.length === 0) { return [new Cw(t.baseVersion)]; } return Fw(u, a); }); Tw(gw, pw, (t, e, n) => { let i = t.targetPosition.clone(); if ( !t.targetPosition.isEqual(e.insertionPosition) || !e.graveyardPosition || n.abRelation == "moveTargetAfter" ) { i = t.targetPosition._getTransformedBySplitOperation(e); } const o = Bp._createFromPositionAndShift(t.sourcePosition, t.howMany); if (o.end.isEqual(e.insertionPosition)) { if (!e.graveyardPosition) { t.howMany++; } t.targetPosition = i; return [t]; } if ( o.start.hasSameParentAs(e.splitPosition) && o.containsPosition(e.splitPosition) ) { let t = new Bp(e.splitPosition, o.end); t = t._getTransformedBySplitOperation(e); const n = [new Bp(o.start, e.splitPosition), t]; return Fw(n, i); } if ( t.targetPosition.isEqual(e.splitPosition) && n.abRelation == "insertAtSource" ) { i = e.moveTargetPosition; } if ( t.targetPosition.isEqual(e.insertionPosition) && n.abRelation == "insertBetween" ) { i = t.targetPosition; } const r = o._getTransformedBySplitOperation(e); const s = [r]; if (e.graveyardPosition) { const i = o.start.isEqual(e.graveyardPosition) || o.containsPosition(e.graveyardPosition); if (t.howMany > 1 && i && !n.aWasUndone) { s.push(Bp._createFromPositionAndShift(e.insertionPosition, 1)); } } return Fw(s, i); }); Tw(gw, kw, (t, e, n) => { const i = Bp._createFromPositionAndShift(t.sourcePosition, t.howMany); if ( e.deletionPosition.hasSameParentAs(t.sourcePosition) && i.containsPosition(e.sourcePosition) ) { if (t.type == "remove" && !n.forceWeakRemove) { if (!n.aWasUndone) { const n = []; let i = e.graveyardPosition.clone(); let o = e.targetPosition._getTransformedByMergeOperation(e); if (t.howMany > 1) { n.push( new gw(t.sourcePosition, t.howMany - 1, t.targetPosition, 0) ); i = i._getTransformedByMove( t.sourcePosition, t.targetPosition, t.howMany - 1 ); o = o._getTransformedByMove( t.sourcePosition, t.targetPosition, t.howMany - 1 ); } const r = e.deletionPosition._getCombined( t.sourcePosition, t.targetPosition ); const s = new gw(i, 1, r, 0); const a = s.getMovedRangeStart().path.slice(); a.push(0); const c = new vp(s.targetPosition.root, a); o = o._getTransformedByMove(i, r, 1); const l = new gw(o, e.howMany, c, 0); n.push(s); n.push(l); return n; } } else { if (t.howMany == 1) { if (!n.bWasUndone) { return [new Cw(0)]; } else { t.sourcePosition = e.graveyardPosition.clone(); t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e); return [t]; } } } } const o = Bp._createFromPositionAndShift(t.sourcePosition, t.howMany); const r = o._getTransformedByMergeOperation(e); t.sourcePosition = r.start; t.howMany = r.end.offset - r.start.offset; t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e); return [t]; }); Tw(vw, fw, (t, e) => { t.position = t.position._getTransformedByInsertOperation(e); return [t]; }); Tw(vw, kw, (t, e) => { if (t.position.isEqual(e.deletionPosition)) { t.position = e.graveyardPosition.clone(); t.position.stickiness = "toNext"; return [t]; } t.position = t.position._getTransformedByMergeOperation(e); return [t]; }); Tw(vw, gw, (t, e) => { t.position = t.position._getTransformedByMoveOperation(e); return [t]; }); Tw(vw, vw, (t, e, n) => { if (t.position.isEqual(e.position)) { if (n.aIsStrong) { t.oldName = e.newName; } else { return [new Cw(0)]; } } return [t]; }); Tw(vw, pw, (t, e) => { const n = t.position.path; const i = e.splitPosition.getParentPath(); if (Et(n, i) == "same" && !e.graveyardPosition) { const e = new vw(t.position.getShiftedBy(1), t.oldName, t.newName, 0); return [t, e]; } t.position = t.position._getTransformedBySplitOperation(e); return [t]; }); Tw(yw, yw, (t, e, n) => { if (t.root === e.root && t.key === e.key) { if (!n.aIsStrong || t.newValue === e.newValue) { return [new Cw(0)]; } else { t.oldValue = e.newValue; } } return [t]; }); Tw(xw, xw, (t, e) => { if (t.rootName === e.rootName && t.isAdd === e.isAdd) { return [new Cw(0)]; } return [t]; }); Tw(pw, fw, (t, e) => { if ( t.splitPosition.hasSameParentAs(e.position) && t.splitPosition.offset < e.position.offset ) { t.howMany += e.howMany; } t.splitPosition = t.splitPosition._getTransformedByInsertOperation(e); t.insertionPosition = t.insertionPosition._getTransformedByInsertOperation(e); return [t]; }); Tw(pw, kw, (t, e, n) => { if ( !t.graveyardPosition && !n.bWasUndone && t.splitPosition.hasSameParentAs(e.sourcePosition) ) { const n = e.graveyardPosition.path.slice(); n.push(0); const i = new vp(e.graveyardPosition.root, n); const o = pw.getInsertionPosition( new vp(e.graveyardPosition.root, n) ); const r = new pw(i, 0, o, null, 0); t.splitPosition = t.splitPosition._getTransformedByMergeOperation(e); t.insertionPosition = pw.getInsertionPosition(t.splitPosition); t.graveyardPosition = r.insertionPosition.clone(); t.graveyardPosition.stickiness = "toNext"; return [r, t]; } if ( t.splitPosition.hasSameParentAs(e.deletionPosition) && !t.splitPosition.isAfter(e.deletionPosition) ) { t.howMany--; } if (t.splitPosition.hasSameParentAs(e.targetPosition)) { t.howMany += e.howMany; } t.splitPosition = t.splitPosition._getTransformedByMergeOperation(e); t.insertionPosition = pw.getInsertionPosition(t.splitPosition); if (t.graveyardPosition) { t.graveyardPosition = t.graveyardPosition._getTransformedByMergeOperation(e); } return [t]; }); Tw(pw, gw, (t, e, n) => { const i = Bp._createFromPositionAndShift(e.sourcePosition, e.howMany); if (t.graveyardPosition) { const o = i.start.isEqual(t.graveyardPosition) || i.containsPosition(t.graveyardPosition); if (!n.bWasUndone && o) { const n = t.splitPosition._getTransformedByMoveOperation(e); const i = t.graveyardPosition._getTransformedByMoveOperation(e); const o = i.path.slice(); o.push(0); const r = new vp(i.root, o); const s = new gw(n, t.howMany, r, 0); return [s]; } t.graveyardPosition = t.graveyardPosition._getTransformedByMoveOperation(e); } const o = t.splitPosition.isEqual(e.targetPosition); if ( o && (n.baRelation == "insertAtSource" || n.abRelation == "splitBefore") ) { t.howMany += e.howMany; t.splitPosition = t.splitPosition._getTransformedByDeletion( e.sourcePosition, e.howMany ); t.insertionPosition = pw.getInsertionPosition(t.splitPosition); return [t]; } if (o && n.abRelation && n.abRelation.howMany) { const { howMany: e, offset: i } = n.abRelation; t.howMany += e; t.splitPosition = t.splitPosition.getShiftedBy(i); return [t]; } if ( t.splitPosition.hasSameParentAs(e.sourcePosition) && i.containsPosition(t.splitPosition) ) { const n = e.howMany - (t.splitPosition.offset - e.sourcePosition.offset); t.howMany -= n; if ( t.splitPosition.hasSameParentAs(e.targetPosition) && t.splitPosition.offset < e.targetPosition.offset ) { t.howMany += e.howMany; } t.splitPosition = e.sourcePosition.clone(); t.insertionPosition = pw.getInsertionPosition(t.splitPosition); return [t]; } if (!e.sourcePosition.isEqual(e.targetPosition)) { if ( t.splitPosition.hasSameParentAs(e.sourcePosition) && t.splitPosition.offset <= e.sourcePosition.offset ) { t.howMany -= e.howMany; } if ( t.splitPosition.hasSameParentAs(e.targetPosition) && t.splitPosition.offset < e.targetPosition.offset ) { t.howMany += e.howMany; } } t.splitPosition.stickiness = "toNone"; t.splitPosition = t.splitPosition._getTransformedByMoveOperation(e); t.splitPosition.stickiness = "toNext"; if (t.graveyardPosition) { t.insertionPosition = t.insertionPosition._getTransformedByMoveOperation(e); } else { t.insertionPosition = pw.getInsertionPosition(t.splitPosition); } return [t]; }); Tw(pw, pw, (t, e, n) => { if (t.splitPosition.isEqual(e.splitPosition)) { if (!t.graveyardPosition && !e.graveyardPosition) { return [new Cw(0)]; } if ( t.graveyardPosition && e.graveyardPosition && t.graveyardPosition.isEqual(e.graveyardPosition) ) { return [new Cw(0)]; } if (n.abRelation == "splitBefore") { t.howMany = 0; t.graveyardPosition = t.graveyardPosition._getTransformedBySplitOperation(e); return [t]; } } if ( t.graveyardPosition && e.graveyardPosition && t.graveyardPosition.isEqual(e.graveyardPosition) ) { const i = t.splitPosition.root.rootName == "$graveyard"; const o = e.splitPosition.root.rootName == "$graveyard"; const r = i && !o; const s = o && !i; const a = s || (!r && n.aIsStrong); if (a) { const n = []; if (e.howMany) { n.push( new gw(e.moveTargetPosition, e.howMany, e.splitPosition, 0) ); } if (t.howMany) { n.push( new gw(t.splitPosition, t.howMany, t.moveTargetPosition, 0) ); } return n; } else { return [new Cw(0)]; } } if (t.graveyardPosition) { t.graveyardPosition = t.graveyardPosition._getTransformedBySplitOperation(e); } if ( t.splitPosition.isEqual(e.insertionPosition) && n.abRelation == "splitBefore" ) { t.howMany++; return [t]; } if ( e.splitPosition.isEqual(t.insertionPosition) && n.baRelation == "splitBefore" ) { const n = e.insertionPosition.path.slice(); n.push(0); const i = new vp(e.insertionPosition.root, n); const o = new gw(t.insertionPosition, 1, i, 0); return [t, o]; } if ( t.splitPosition.hasSameParentAs(e.splitPosition) && t.splitPosition.offset < e.splitPosition.offset ) { t.howMany -= e.howMany; } t.splitPosition = t.splitPosition._getTransformedBySplitOperation(e); t.insertionPosition = pw.getInsertionPosition(t.splitPosition); return [t]; }); function Ow(t, e) { return ( t.targetPosition._getTransformedByDeletion( e.sourcePosition, e.howMany ) === null ); } function Fw(t, e) { const n = []; for (let i = 0; i < t.length; i++) { const o = t[i]; const r = new gw(o.start, o.end.offset - o.start.offset, e, 0); n.push(r); for (let e = i + 1; e < t.length; e++) { t[e] = t[e]._getTransformedByMove( r.sourcePosition, r.targetPosition, r.howMany )[0]; } e = e._getTransformedByMove( r.sourcePosition, r.targetPosition, r.howMany ); } return n; } class jw extends G(vp) { constructor(t, e, n = "toNone") { super(t, e, n); if (!this.root.is("rootElement")) { throw new N("model-liveposition-root-not-rootelement", t); } Hw.call(this); } detach() { this.stopListening(); } toPosition() { return new vp(this.root, this.path.slice(), this.stickiness); } static fromPosition(t, e) { return new this(t.root, t.path.slice(), e ? e : t.stickiness); } } jw.prototype.is = function (t) { return ( t === "livePosition" || t === "model:livePosition" || t == "position" || t === "model:position" ); }; function Hw() { this.listenTo( this.root.document.model, "applyOperation", (t, e) => { const n = e[0]; if (!n.isDocumentOperation) { return; } Uw.call(this, n); }, { priority: "low" } ); } function Uw(t) { const e = this.getTransformedByOperation(t); if (!this.isEqual(e)) { const t = this.toPosition(); this.path = e.path; this.root = e.root; this.fire("change", t); } } class $w { constructor(t = {}) { if (typeof t === "string") { t = t === "transparent" ? { isUndoable: false } : {}; z("batch-constructor-deprecated-string-type"); } const { isUndoable: e = true, isLocal: n = true, isUndo: i = false, isTyping: o = false, } = t; this.operations = []; this.isUndoable = e; this.isLocal = n; this.isUndo = i; this.isTyping = o; } get type() { z("batch-type-deprecated"); return "default"; } get baseVersion() { for (const t of this.operations) { if (t.baseVersion !== null) { return t.baseVersion; } } return null; } addOperation(t) { t.batch = this; this.operations.push(t); return t; } } class qw { constructor(t) { this._changesInElement = new Map(); this._elementSnapshots = new Map(); this._changedMarkers = new Map(); this._changedRoots = new Map(); this._changeCount = 0; this._cachedChanges = null; this._cachedChangesWithGraveyard = null; this._refreshedItems = new Set(); this._markerCollection = t; } get isEmpty() { return ( this._changesInElement.size == 0 && this._changedMarkers.size == 0 && this._changedRoots.size == 0 ); } bufferOperation(t) { const e = t; switch (e.type) { case "insert": { if (this._isInInsertedElement(e.position.parent)) { return; } this._markInsert( e.position.parent, e.position.offset, e.nodes.maxOffset ); break; } case "addAttribute": case "removeAttribute": case "changeAttribute": { for (const t of e.range.getItems({ shallow: true })) { if (this._isInInsertedElement(t.parent)) { continue; } this._markAttribute(t); } break; } case "remove": case "move": case "reinsert": { if ( e.sourcePosition.isEqual(e.targetPosition) || e.sourcePosition .getShiftedBy(e.howMany) .isEqual(e.targetPosition) ) { return; } const t = this._isInInsertedElement(e.sourcePosition.parent); const n = this._isInInsertedElement(e.targetPosition.parent); if (!t) { this._markRemove( e.sourcePosition.parent, e.sourcePosition.offset, e.howMany ); } if (!n) { this._markInsert( e.targetPosition.parent, e.getMovedRangeStart().offset, e.howMany ); } break; } case "rename": { if (this._isInInsertedElement(e.position.parent)) { return; } this._markRemove(e.position.parent, e.position.offset, 1); this._markInsert(e.position.parent, e.position.offset, 1); const t = Bp._createFromPositionAndShift(e.position, 1); for (const e of this._markerCollection.getMarkersIntersectingRange( t )) { const t = e.getData(); this.bufferMarkerChange(e.name, t, t); } break; } case "split": { const t = e.splitPosition.parent; if (!this._isInInsertedElement(t)) { this._markRemove(t, e.splitPosition.offset, e.howMany); } if (!this._isInInsertedElement(e.insertionPosition.parent)) { this._markInsert( e.insertionPosition.parent, e.insertionPosition.offset, 1 ); } if (e.graveyardPosition) { this._markRemove( e.graveyardPosition.parent, e.graveyardPosition.offset, 1 ); } break; } case "merge": { const t = e.sourcePosition.parent; if (!this._isInInsertedElement(t.parent)) { this._markRemove(t.parent, t.startOffset, 1); } const n = e.graveyardPosition.parent; this._markInsert(n, e.graveyardPosition.offset, 1); const i = e.targetPosition.parent; if (!this._isInInsertedElement(i)) { this._markInsert(i, e.targetPosition.offset, t.maxOffset); } break; } case "detachRoot": case "addRoot": { const t = e.affectedSelectable; if (!t._isLoaded) { return; } if (t.isAttached() == e.isAdd) { return; } this._bufferRootStateChange(e.rootName, e.isAdd); break; } case "addRootAttribute": case "removeRootAttribute": case "changeRootAttribute": { if (!e.root._isLoaded) { return; } const t = e.root.rootName; this._bufferRootAttributeChange(t, e.key, e.oldValue, e.newValue); break; } } this._cachedChanges = null; } bufferMarkerChange(t, e, n) { if ( e.range && e.range.root.is("rootElement") && !e.range.root._isLoaded ) { e.range = null; } if ( n.range && n.range.root.is("rootElement") && !n.range.root._isLoaded ) { n.range = null; } let i = this._changedMarkers.get(t); if (!i) { i = { newMarkerData: n, oldMarkerData: e }; this._changedMarkers.set(t, i); } else { i.newMarkerData = n; } if (i.oldMarkerData.range == null && n.range == null) { this._changedMarkers.delete(t); } } getMarkersToRemove() { const t = []; for (const [e, n] of this._changedMarkers) { if (n.oldMarkerData.range != null) { t.push({ name: e, range: n.oldMarkerData.range }); } } return t; } getMarkersToAdd() { const t = []; for (const [e, n] of this._changedMarkers) { if (n.newMarkerData.range != null) { t.push({ name: e, range: n.newMarkerData.range }); } } return t; } getChangedMarkers() { return Array.from(this._changedMarkers).map(([t, e]) => ({ name: t, data: { oldRange: e.oldMarkerData.range, newRange: e.newMarkerData.range, }, })); } hasDataChanges() { if (this.getChanges().length) { return true; } if (this._changedRoots.size > 0) { return true; } for (const { newMarkerData: t, oldMarkerData: e, } of this._changedMarkers.values()) { if (t.affectsData !== e.affectsData) { return true; } if (t.affectsData) { const n = t.range && !e.range; const i = !t.range && e.range; const o = t.range && e.range && !t.range.isEqual(e.range); if (n || i || o) { return true; } } } return false; } getChanges(t = {}) { if (this._cachedChanges) { if (t.includeChangesInGraveyard) { return this._cachedChangesWithGraveyard.slice(); } else { return this._cachedChanges.slice(); } } let e = []; for (const t of this._changesInElement.keys()) { const n = this._changesInElement.get(t).sort((t, e) => { if (t.offset === e.offset) { if (t.type != e.type) { return t.type == "remove" ? -1 : 1; } return 0; } return t.offset < e.offset ? -1 : 1; }); const i = this._elementSnapshots.get(t); const o = Ww(t.getChildren()); const r = Gw(i.length, n); let s = 0; let a = 0; for (const n of r) { if (n === "i") { e.push(this._getInsertDiff(t, s, o[s])); s++; } else if (n === "r") { e.push(this._getRemoveDiff(t, s, i[a])); a++; } else if (n === "a") { const n = o[s].attributes; const r = i[a].attributes; let c; if (o[s].name == "$text") { c = new Bp(vp._createAt(t, s), vp._createAt(t, s + 1)); } else { const e = t.offsetToIndex(s); c = new Bp( vp._createAt(t, s), vp._createAt(t.getChild(e), 0) ); } e.push(...this._getAttributesDiff(c, r, n)); s++; a++; } else { s++; a++; } } } e.sort((t, e) => { if (t.position.root != e.position.root) { return t.position.root.rootName < e.position.root.rootName ? -1 : 1; } if (t.position.isEqual(e.position)) { return t.changeCount - e.changeCount; } return t.position.isBefore(e.position) ? -1 : 1; }); for (let t = 1, n = 0; t < e.length; t++) { const i = e[n]; const o = e[t]; const r = i.type == "remove" && o.type == "remove" && i.name == "$text" && o.name == "$text" && i.position.isEqual(o.position); const s = i.type == "insert" && o.type == "insert" && i.name == "$text" && o.name == "$text" && i.position.parent == o.position.parent && i.position.offset + i.length == o.position.offset; const a = i.type == "attribute" && o.type == "attribute" && i.position.parent == o.position.parent && i.range.isFlat && o.range.isFlat && i.position.offset + i.length == o.position.offset && i.attributeKey == o.attributeKey && i.attributeOldValue == o.attributeOldValue && i.attributeNewValue == o.attributeNewValue; if (r || s || a) { i.length++; if (a) { i.range.end = i.range.end.getShiftedBy(1); } e[t] = null; } else { n = t; } } e = e.filter((t) => t); for (const t of e) { delete t.changeCount; if (t.type == "attribute") { delete t.position; delete t.length; } } this._changeCount = 0; this._cachedChangesWithGraveyard = e; this._cachedChanges = e.filter(Kw); if (t.includeChangesInGraveyard) { return this._cachedChangesWithGraveyard.slice(); } else { return this._cachedChanges.slice(); } } getChangedRoots() { return Array.from(this._changedRoots.values()).map((t) => { const e = { ...t }; if (e.state !== undefined) { delete e.attributes; } return e; }); } getRefreshedItems() { return new Set(this._refreshedItems); } reset() { this._changesInElement.clear(); this._elementSnapshots.clear(); this._changedMarkers.clear(); this._changedRoots.clear(); this._refreshedItems = new Set(); this._cachedChanges = null; } _bufferRootStateChange(t, e) { if (!this._changedRoots.has(t)) { this._changedRoots.set(t, { name: t, state: e ? "attached" : "detached", }); return; } const n = this._changedRoots.get(t); if (n.state !== undefined) { delete n.state; if (n.attributes === undefined) { this._changedRoots.delete(t); } } else { n.state = e ? "attached" : "detached"; } } _bufferRootAttributeChange(t, e, n, i) { const o = this._changedRoots.get(t) || { name: t }; const r = o.attributes || {}; if (r[e]) { const t = r[e]; if (i === t.oldValue) { delete r[e]; } else { t.newValue = i; } } else { r[e] = { oldValue: n, newValue: i }; } if (Object.entries(r).length === 0) { delete o.attributes; if (o.state === undefined) { this._changedRoots.delete(t); } } else { o.attributes = r; this._changedRoots.set(t, o); } } _refreshItem(t) { if (this._isInInsertedElement(t.parent)) { return; } this._markRemove(t.parent, t.startOffset, t.offsetSize); this._markInsert(t.parent, t.startOffset, t.offsetSize); this._refreshedItems.add(t); const e = Bp._createOn(t); for (const t of this._markerCollection.getMarkersIntersectingRange( e )) { const e = t.getData(); this.bufferMarkerChange(t.name, e, e); } this._cachedChanges = null; } _bufferRootLoad(t) { if (!t.isAttached()) { return; } this._bufferRootStateChange(t.rootName, true); this._markInsert(t, 0, t.maxOffset); for (const e of t.getAttributeKeys()) { this._bufferRootAttributeChange( t.rootName, e, null, t.getAttribute(e) ); } for (const e of this._markerCollection) { if (e.getRange().root == t) { const t = e.getData(); this.bufferMarkerChange(e.name, { ...t, range: null }, t); } } } _markInsert(t, e, n) { if (t.root.is("rootElement") && !t.root._isLoaded) { return; } const i = { type: "insert", offset: e, howMany: n, count: this._changeCount++, }; this._markChange(t, i); } _markRemove(t, e, n) { if (t.root.is("rootElement") && !t.root._isLoaded) { return; } const i = { type: "remove", offset: e, howMany: n, count: this._changeCount++, }; this._markChange(t, i); this._removeAllNestedChanges(t, e, n); } _markAttribute(t) { if (t.root.is("rootElement") && !t.root._isLoaded) { return; } const e = { type: "attribute", offset: t.startOffset, howMany: t.offsetSize, count: this._changeCount++, }; this._markChange(t.parent, e); } _markChange(t, e) { this._makeSnapshot(t); const n = this._getChangesForElement(t); this._handleChange(e, n); n.push(e); for (let t = 0; t < n.length; t++) { if (n[t].howMany < 1) { n.splice(t, 1); t--; } } } _getChangesForElement(t) { let e; if (this._changesInElement.has(t)) { e = this._changesInElement.get(t); } else { e = []; this._changesInElement.set(t, e); } return e; } _makeSnapshot(t) { if (!this._elementSnapshots.has(t)) { this._elementSnapshots.set(t, Ww(t.getChildren())); } } _handleChange(t, e) { t.nodesToHandle = t.howMany; for (const n of e) { const i = t.offset + t.howMany; const o = n.offset + n.howMany; if (t.type == "insert") { if (n.type == "insert") { if (t.offset <= n.offset) { n.offset += t.howMany; } else if (t.offset < o) { n.howMany += t.nodesToHandle; t.nodesToHandle = 0; } } if (n.type == "remove") { if (t.offset < n.offset) { n.offset += t.howMany; } } if (n.type == "attribute") { if (t.offset <= n.offset) { n.offset += t.howMany; } else if (t.offset < o) { const o = n.howMany; n.howMany = t.offset - n.offset; e.unshift({ type: "attribute", offset: i, howMany: o - n.howMany, count: this._changeCount++, }); } } } if (t.type == "remove") { if (n.type == "insert") { if (i <= n.offset) { n.offset -= t.howMany; } else if (i <= o) { if (t.offset < n.offset) { const e = i - n.offset; n.offset = t.offset; n.howMany -= e; t.nodesToHandle -= e; } else { n.howMany -= t.nodesToHandle; t.nodesToHandle = 0; } } else { if (t.offset <= n.offset) { t.nodesToHandle -= n.howMany; n.howMany = 0; } else if (t.offset < o) { const e = o - t.offset; n.howMany -= e; t.nodesToHandle -= e; } } } if (n.type == "remove") { if (i <= n.offset) { n.offset -= t.howMany; } else if (t.offset < n.offset) { t.nodesToHandle += n.howMany; n.howMany = 0; } } if (n.type == "attribute") { if (i <= n.offset) { n.offset -= t.howMany; } else if (t.offset < n.offset) { const e = i - n.offset; n.offset = t.offset; n.howMany -= e; } else if (t.offset < o) { if (i <= o) { const i = n.howMany; n.howMany = t.offset - n.offset; const o = i - n.howMany - t.nodesToHandle; e.unshift({ type: "attribute", offset: t.offset, howMany: o, count: this._changeCount++, }); } else { n.howMany -= o - t.offset; } } } } if (t.type == "attribute") { if (n.type == "insert") { if (t.offset < n.offset && i > n.offset) { if (i > o) { const t = { type: "attribute", offset: o, howMany: i - o, count: this._changeCount++, }; this._handleChange(t, e); e.push(t); } t.nodesToHandle = n.offset - t.offset; t.howMany = t.nodesToHandle; } else if (t.offset >= n.offset && t.offset < o) { if (i > o) { t.nodesToHandle = i - o; t.offset = o; } else { t.nodesToHandle = 0; } } } if (n.type == "remove") { if (t.offset < n.offset && i > n.offset) { const o = { type: "attribute", offset: n.offset, howMany: i - n.offset, count: this._changeCount++, }; this._handleChange(o, e); e.push(o); t.nodesToHandle = n.offset - t.offset; t.howMany = t.nodesToHandle; } } if (n.type == "attribute") { if (t.offset >= n.offset && i <= o) { t.nodesToHandle = 0; t.howMany = 0; t.offset = 0; } else if (t.offset <= n.offset && i >= o) { n.howMany = 0; } } } } t.howMany = t.nodesToHandle; delete t.nodesToHandle; } _getInsertDiff(t, e, n) { return { type: "insert", position: vp._createAt(t, e), name: n.name, attributes: new Map(n.attributes), length: 1, changeCount: this._changeCount++, _element: n.element, }; } _getRemoveDiff(t, e, n) { return { type: "remove", position: vp._createAt(t, e), name: n.name, attributes: new Map(n.attributes), length: 1, changeCount: this._changeCount++, _element: n.element, }; } _getAttributesDiff(t, e, n) { const i = []; n = new Map(n); for (const [o, r] of e) { const e = n.has(o) ? n.get(o) : null; if (e !== r) { i.push({ type: "attribute", position: t.start, range: t.clone(), length: 1, attributeKey: o, attributeOldValue: r, attributeNewValue: e, changeCount: this._changeCount++, }); } n.delete(o); } for (const [e, o] of n) { i.push({ type: "attribute", position: t.start, range: t.clone(), length: 1, attributeKey: e, attributeOldValue: null, attributeNewValue: o, changeCount: this._changeCount++, }); } return i; } _isInInsertedElement(t) { const e = t.parent; if (!e) { return false; } const n = this._changesInElement.get(e); const i = t.startOffset; if (n) { for (const t of n) { if ( t.type == "insert" && i >= t.offset && i < t.offset + t.howMany ) { return true; } } } return this._isInInsertedElement(e); } _removeAllNestedChanges(t, e, n) { const i = new Bp(vp._createAt(t, e), vp._createAt(t, e + n)); for (const t of i.getItems({ shallow: true })) { if (t.is("element")) { this._elementSnapshots.delete(t); this._changesInElement.delete(t); this._removeAllNestedChanges(t, 0, t.maxOffset); } } } } function Ww(t) { const e = []; for (const n of t) { if (n.is("$text")) { for (let t = 0; t < n.data.length; t++) { e.push({ name: "$text", attributes: new Map(n.getAttributes()) }); } } else { e.push({ name: n.name, attributes: new Map(n.getAttributes()), element: n, }); } } return e; } function Gw(t, e) { const n = []; let i = 0; let o = 0; for (const t of e) { if (t.offset > i) { for (let e = 0; e < t.offset - i; e++) { n.push("e"); } o += t.offset - i; } if (t.type == "insert") { for (let e = 0; e < t.howMany; e++) { n.push("i"); } i = t.offset + t.howMany; } else if (t.type == "remove") { for (let e = 0; e < t.howMany; e++) { n.push("r"); } i = t.offset; o += t.howMany; } else { n.push(..."a".repeat(t.howMany).split("")); i = t.offset + t.howMany; o += t.howMany; } } if (o < t) { for (let e = 0; e < t - o - i; e++) { n.push("e"); } } return n; } function Kw(t) { const e = "position" in t && t.position.root.rootName == "$graveyard"; const n = "range" in t && t.range.root.rootName == "$graveyard"; return !e && !n; } class Yw { constructor() { this._operations = []; this._undoPairs = new Map(); this._undoneOperations = new Set(); this._baseVersionToOperationIndex = new Map(); this._version = 0; this._gaps = new Map(); } get version() { return this._version; } set version(t) { if (this._operations.length && t > this._version + 1) { this._gaps.set(this._version, t); } this._version = t; } get lastOperation() { return this._operations[this._operations.length - 1]; } addOperation(t) { if (t.baseVersion !== this.version) { throw new N( "model-document-history-addoperation-incorrect-version", this, { operation: t, historyVersion: this.version } ); } this._operations.push(t); this._version++; this._baseVersionToOperationIndex.set( t.baseVersion, this._operations.length - 1 ); } getOperations(t, e = this.version) { if (!this._operations.length) { return []; } const n = this._operations[0]; if (t === undefined) { t = n.baseVersion; } let i = e - 1; for (const [e, n] of this._gaps) { if (t > e && t < n) { t = n; } if (i > e && i < n) { i = e - 1; } } if (i < n.baseVersion || t > this.lastOperation.baseVersion) { return []; } let o = this._baseVersionToOperationIndex.get(t); if (o === undefined) { o = 0; } let r = this._baseVersionToOperationIndex.get(i); if (r === undefined) { r = this._operations.length - 1; } return this._operations.slice(o, r + 1); } getOperation(t) { const e = this._baseVersionToOperationIndex.get(t); if (e === undefined) { return; } return this._operations[e]; } setOperationAsUndone(t, e) { this._undoPairs.set(e, t); this._undoneOperations.add(t); } isUndoingOperation(t) { return this._undoPairs.has(t); } isUndoneOperation(t) { return this._undoneOperations.has(t); } getUndoneOperation(t) { return this._undoPairs.get(t); } reset() { this._version = 0; this._undoPairs = new Map(); this._operations = []; this._undoneOperations = new Set(); this._gaps = new Map(); this._baseVersionToOperationIndex = new Map(); } } class Qw extends wp { constructor(t, e, n = "main") { super(e); this._isAttached = true; this._isLoaded = true; this._document = t; this.rootName = n; } get document() { return this._document; } isAttached() { return this._isAttached; } toJSON() { return this.rootName; } } Qw.prototype.is = function (t, e) { if (!e) { return ( t === "rootElement" || t === "model:rootElement" || t === "element" || t === "model:element" || t === "node" || t === "model:node" ); } return ( e === this.name && (t === "rootElement" || t === "model:rootElement" || t === "element" || t === "model:element") ); }; const Zw = "$graveyard"; class Jw extends G() { constructor(t) { super(); this.model = t; this.history = new Yw(); this.selection = new Zp(this); this.roots = new nd({ idProperty: "rootName" }); this.differ = new qw(t.markers); this.isReadOnly = false; this._postFixers = new Set(); this._hasSelectionChangedFromTheLastChangeBlock = false; this.createRoot("$root", Zw); this.listenTo( t, "applyOperation", (t, e) => { const n = e[0]; if (n.isDocumentOperation) { this.differ.bufferOperation(n); } }, { priority: "high" } ); this.listenTo( t, "applyOperation", (t, e) => { const n = e[0]; if (n.isDocumentOperation) { this.history.addOperation(n); } }, { priority: "low" } ); this.listenTo(this.selection, "change", () => { this._hasSelectionChangedFromTheLastChangeBlock = true; }); this.listenTo(t.markers, "update", (t, e, n, i, o) => { const r = { ...e.getData(), range: i }; this.differ.bufferMarkerChange(e.name, o, r); if (n === null) { e.on("change", (t, n) => { const i = e.getData(); this.differ.bufferMarkerChange(e.name, { ...i, range: n }, i); }); } }); this.registerPostFixer((t) => { let e = false; for (const n of this.roots) { if (!n.isAttached() && !n.isEmpty) { t.remove(t.createRangeIn(n)); e = true; } } for (const n of this.model.markers) { if (!n.getRange().root.isAttached()) { t.removeMarker(n); e = true; } } return e; }); } get version() { return this.history.version; } set version(t) { this.history.version = t; } get graveyard() { return this.getRoot(Zw); } createRoot(t = "$root", e = "main") { if (this.roots.get(e)) { throw new N("model-document-createroot-name-exists", this, { name: e, }); } const n = new Qw(this, t, e); this.roots.add(n); return n; } destroy() { this.selection.destroy(); this.stopListening(); } getRoot(t = "main") { return this.roots.get(t); } getRootNames(t = false) { return this.getRoots(t).map((t) => t.rootName); } getRoots(t = false) { return this.roots.filter( (e) => e != this.graveyard && (t || e.isAttached()) && e._isLoaded ); } registerPostFixer(t) { this._postFixers.add(t); } toJSON() { const t = Lu(this); t.selection = "[engine.model.DocumentSelection]"; t.model = "[engine.model.Model]"; return t; } _handleChangeBlock(t) { if (this._hasDocumentChangedFromTheLastChangeBlock()) { this._callPostFixers(t); this.selection.refresh(); if (this.differ.hasDataChanges()) { this.fire("change:data", t.batch); } else { this.fire("change", t.batch); } this.selection.refresh(); this.differ.reset(); } this._hasSelectionChangedFromTheLastChangeBlock = false; } _hasDocumentChangedFromTheLastChangeBlock() { return ( !this.differ.isEmpty || this._hasSelectionChangedFromTheLastChangeBlock ); } _getDefaultRoot() { const t = this.getRoots(); return t.length ? t[0] : this.graveyard; } _getDefaultRange() { const t = this._getDefaultRoot(); const e = this.model; const n = e.schema; const i = e.createPositionFromPath(t, [0]); const o = n.getNearestSelectionRange(i); return o || e.createRange(i); } _validateSelectionRange(t) { return Xw(t.start) && Xw(t.end); } _callPostFixers(t) { let e = false; do { for (const n of this._postFixers) { this.selection.refresh(); e = n(t); if (e) { break; } } } while (e); } } function Xw(t) { const e = t.textNode; if (e) { const n = e.data; const i = t.offset - e.startOffset; return !fd(n, i) && !pd(n, i); } return true; } class tA extends G() { constructor() { super(...arguments); this._markers = new Map(); } [Symbol.iterator]() { return this._markers.values(); } has(t) { const e = t instanceof eA ? t.name : t; return this._markers.has(e); } get(t) { return this._markers.get(t) || null; } _set(t, e, n = false, i = false) { const o = t instanceof eA ? t.name : t; if (o.includes(",")) { throw new N("markercollection-incorrect-marker-name", this); } const r = this._markers.get(o); if (r) { const t = r.getData(); const s = r.getRange(); let a = false; if (!s.isEqual(e)) { r._attachLiveRange(Wp.fromRange(e)); a = true; } if (n != r.managedUsingOperations) { r._managedUsingOperations = n; a = true; } if (typeof i === "boolean" && i != r.affectsData) { r._affectsData = i; a = true; } if (a) { this.fire(`update:${o}`, r, s, e, t); } return r; } const s = Wp.fromRange(e); const a = new eA(o, s, n, i); this._markers.set(o, a); this.fire(`update:${o}`, a, null, e, { ...a.getData(), range: null }); return a; } _remove(t) { const e = t instanceof eA ? t.name : t; const n = this._markers.get(e); if (n) { this._markers.delete(e); this.fire(`update:${e}`, n, n.getRange(), null, n.getData()); this._destroyMarker(n); return true; } return false; } _refresh(t) { const e = t instanceof eA ? t.name : t; const n = this._markers.get(e); if (!n) { throw new N("markercollection-refresh-marker-not-exists", this); } const i = n.getRange(); this.fire(`update:${e}`, n, i, i, n.getData()); } *getMarkersAtPosition(t) { for (const e of this) { if (e.getRange().containsPosition(t)) { yield e; } } } *getMarkersIntersectingRange(t) { for (const e of this) { if (e.getRange().getIntersection(t) !== null) { yield e; } } } destroy() { for (const t of this._markers.values()) { this._destroyMarker(t); } this._markers = null; this.stopListening(); } *getMarkersGroup(t) { for (const e of this._markers.values()) { if (e.name.startsWith(t + ":")) { yield e; } } } _destroyMarker(t) { t.stopListening(); t._detachLiveRange(); } } class eA extends G(gp) { constructor(t, e, n, i) { super(); this.name = t; this._liveRange = this._attachLiveRange(e); this._managedUsingOperations = n; this._affectsData = i; } get managedUsingOperations() { if (!this._liveRange) { throw new N("marker-destroyed", this); } return this._managedUsingOperations; } get affectsData() { if (!this._liveRange) { throw new N("marker-destroyed", this); } return this._affectsData; } getData() { return { range: this.getRange(), affectsData: this.affectsData, managedUsingOperations: this.managedUsingOperations, }; } getStart() { if (!this._liveRange) { throw new N("marker-destroyed", this); } return this._liveRange.start.clone(); } getEnd() { if (!this._liveRange) { throw new N("marker-destroyed", this); } return this._liveRange.end.clone(); } getRange() { if (!this._liveRange) { throw new N("marker-destroyed", this); } return this._liveRange.toRange(); } _attachLiveRange(t) { if (this._liveRange) { this._detachLiveRange(); } t.delegate("change:range").to(this); t.delegate("change:content").to(this); this._liveRange = t; return t; } _detachLiveRange() { this._liveRange.stopDelegating("change:range", this); this._liveRange.stopDelegating("change:content", this); this._liveRange.detach(); this._liveRange = null; } } eA.prototype.is = function (t) { return t === "marker" || t === "model:marker"; }; class nA extends rw { constructor(t, e) { super(null); this.sourcePosition = t.clone(); this.howMany = e; } get type() { return "detach"; } get affectedSelectable() { return null; } toJSON() { const t = super.toJSON(); t.sourcePosition = this.sourcePosition.toJSON(); return t; } _validate() { if (this.sourcePosition.root.document) { throw new N("detach-operation-on-document-node", this); } } _execute() { aw(Bp._createFromPositionAndShift(this.sourcePosition, this.howMany)); } static get className() { return "DetachOperation"; } } class iA extends gp { constructor(t) { super(); this.markers = new Map(); this._children = new pp(); if (t) { this._insertChild(0, t); } } [Symbol.iterator]() { return this.getChildren(); } get childCount() { return this._children.length; } get maxOffset() { return this._children.maxOffset; } get isEmpty() { return this.childCount === 0; } get nextSibling() { return null; } get previousSibling() { return null; } get root() { return this; } get parent() { return null; } get document() { return null; } isAttached() { return false; } getAncestors() { return []; } getChild(t) { return this._children.getNode(t); } getChildren() { return this._children[Symbol.iterator](); } getChildIndex(t) { return this._children.getNodeIndex(t); } getChildStartOffset(t) { return this._children.getNodeStartOffset(t); } getPath() { return []; } getNodeByPath(t) { let e = this; for (const n of t) { e = e.getChild(e.offsetToIndex(n)); } return e; } offsetToIndex(t) { return this._children.offsetToIndex(t); } toJSON() { const t = []; for (const e of this._children) { t.push(e.toJSON()); } return t; } static fromJSON(t) { const e = []; for (const n of t) { if (n.name) { e.push(wp.fromJSON(n)); } else { e.push(kp.fromJSON(n)); } } return new iA(e); } _appendChild(t) { this._insertChild(this.childCount, t); } _insertChild(t, e) { const n = oA(e); for (const t of n) { if (t.parent !== null) { t._remove(); } t.parent = this; } this._children._insertNodes(t, n); } _removeChildren(t, e = 1) { const n = this._children._removeNodes(t, e); for (const t of n) { t.parent = null; } return n; } } iA.prototype.is = function (t) { return t === "documentFragment" || t === "model:documentFragment"; }; function oA(t) { if (typeof t == "string") { return [new kp(t)]; } if (!Dt(t)) { t = [t]; } return Array.from(t).map((t) => { if (typeof t == "string") { return new kp(t); } if (t instanceof bp) { return new kp(t.data, t.getAttributes()); } return t; }); } class rA { constructor(t, e) { this.model = t; this.batch = e; } createText(t, e) { return new kp(t, e); } createElement(t, e) { return new wp(t, e); } createDocumentFragment() { return new iA(); } cloneElement(t, e = true) { return t._clone(e); } insert(t, e, n = 0) { this._assertWriterUsedCorrectly(); if (t instanceof kp && t.data == "") { return; } const i = vp._createAt(e, n); if (t.parent) { if (dA(t.root, i.root)) { this.move(Bp._createOn(t), i); return; } else { if (t.root.document) { throw new N("model-writer-insert-forbidden-move", this); } else { this.remove(t); } } } const o = i.root.document ? i.root.document.version : null; const r = new fw(i, t, o); if (t instanceof kp) { r.shouldReceiveAttributes = true; } this.batch.addOperation(r); this.model.applyOperation(r); if (t instanceof iA) { for (const [e, n] of t.markers) { const t = vp._createAt(n.root, 0); const o = new Bp( n.start._getCombined(t, i), n.end._getCombined(t, i) ); const r = { range: o, usingOperation: true, affectsData: true }; if (this.model.markers.has(e)) { this.updateMarker(e, r); } else { this.addMarker(e, r); } } } } insertText(t, e, n, i) { if (e instanceof iA || e instanceof wp || e instanceof vp) { this.insert(this.createText(t), e, n); } else { this.insert(this.createText(t, e), n, i); } } insertElement(t, e, n, i) { if (e instanceof iA || e instanceof wp || e instanceof vp) { this.insert(this.createElement(t), e, n); } else { this.insert(this.createElement(t, e), n, i); } } append(t, e) { this.insert(t, e, "end"); } appendText(t, e, n) { if (e instanceof iA || e instanceof wp) { this.insert(this.createText(t), e, "end"); } else { this.insert(this.createText(t, e), n, "end"); } } appendElement(t, e, n) { if (e instanceof iA || e instanceof wp) { this.insert(this.createElement(t), e, "end"); } else { this.insert(this.createElement(t, e), n, "end"); } } setAttribute(t, e, n) { this._assertWriterUsedCorrectly(); if (n instanceof Bp) { const i = n.getMinimalFlatRanges(); for (const n of i) { sA(this, t, e, n); } } else { aA(this, t, e, n); } } setAttributes(t, e) { for (const [n, i] of ad(t)) { this.setAttribute(n, i, e); } } removeAttribute(t, e) { this._assertWriterUsedCorrectly(); if (e instanceof Bp) { const n = e.getMinimalFlatRanges(); for (const e of n) { sA(this, t, null, e); } } else { aA(this, t, null, e); } } clearAttributes(t) { this._assertWriterUsedCorrectly(); const e = (t) => { for (const e of t.getAttributeKeys()) { this.removeAttribute(e, t); } }; if (!(t instanceof Bp)) { e(t); } else { for (const n of t.getItems()) { e(n); } } } move(t, e, n) { this._assertWriterUsedCorrectly(); if (!(t instanceof Bp)) { throw new N("writer-move-invalid-range", this); } if (!t.isFlat) { throw new N("writer-move-range-not-flat", this); } const i = vp._createAt(e, n); if (i.isEqual(t.start)) { return; } this._addOperationForAffectedMarkers("move", t); if (!dA(t.root, i.root)) { throw new N("writer-move-different-document", this); } const o = t.root.document ? t.root.document.version : null; const r = new gw(t.start, t.end.offset - t.start.offset, i, o); this.batch.addOperation(r); this.model.applyOperation(r); } remove(t) { this._assertWriterUsedCorrectly(); const e = t instanceof Bp ? t : Bp._createOn(t); const n = e.getMinimalFlatRanges().reverse(); for (const t of n) { this._addOperationForAffectedMarkers("move", t); lA(t.start, t.end.offset - t.start.offset, this.batch, this.model); } } merge(t) { this._assertWriterUsedCorrectly(); const e = t.nodeBefore; const n = t.nodeAfter; this._addOperationForAffectedMarkers("merge", t); if (!(e instanceof wp)) { throw new N("writer-merge-no-element-before", this); } if (!(n instanceof wp)) { throw new N("writer-merge-no-element-after", this); } if (!t.root.document) { this._mergeDetached(t); } else { this._merge(t); } } createPositionFromPath(t, e, n) { return this.model.createPositionFromPath(t, e, n); } createPositionAt(t, e) { return this.model.createPositionAt(t, e); } createPositionAfter(t) { return this.model.createPositionAfter(t); } createPositionBefore(t) { return this.model.createPositionBefore(t); } createRange(t, e) { return this.model.createRange(t, e); } createRangeIn(t) { return this.model.createRangeIn(t); } createRangeOn(t) { return this.model.createRangeOn(t); } createSelection(...t) { return this.model.createSelection(...t); } _mergeDetached(t) { const e = t.nodeBefore; const n = t.nodeAfter; this.move(Bp._createIn(n), vp._createAt(e, "end")); this.remove(n); } _merge(t) { const e = vp._createAt(t.nodeBefore, "end"); const n = vp._createAt(t.nodeAfter, 0); const i = t.root.document.graveyard; const o = new vp(i, [0]); const r = t.root.document.version; const s = new kw(n, t.nodeAfter.maxOffset, e, o, r); this.batch.addOperation(s); this.model.applyOperation(s); } rename(t, e) { this._assertWriterUsedCorrectly(); if (!(t instanceof wp)) { throw new N("writer-rename-not-element-instance", this); } const n = t.root.document ? t.root.document.version : null; const i = new vw(vp._createBefore(t), t.name, e, n); this.batch.addOperation(i); this.model.applyOperation(i); } split(t, e) { this._assertWriterUsedCorrectly(); let n = t.parent; if (!n.parent) { throw new N("writer-split-element-no-parent", this); } if (!e) { e = n.parent; } if (!t.parent.getAncestors({ includeSelf: true }).includes(e)) { throw new N("writer-split-invalid-limit-element", this); } let i; let o; do { const e = n.root.document ? n.root.document.version : null; const r = n.maxOffset - t.offset; const s = pw.getInsertionPosition(t); const a = new pw(t, r, s, null, e); this.batch.addOperation(a); this.model.applyOperation(a); if (!i && !o) { i = n; o = t.parent.nextSibling; } t = this.createPositionAfter(t.parent); n = t.parent; } while (n !== e); return { position: t, range: new Bp(vp._createAt(i, "end"), vp._createAt(o, 0)), }; } wrap(t, e) { this._assertWriterUsedCorrectly(); if (!t.isFlat) { throw new N("writer-wrap-range-not-flat", this); } const n = e instanceof wp ? e : new wp(e); if (n.childCount > 0) { throw new N("writer-wrap-element-not-empty", this); } if (n.parent !== null) { throw new N("writer-wrap-element-attached", this); } this.insert(n, t.start); const i = new Bp(t.start.getShiftedBy(1), t.end.getShiftedBy(1)); this.move(i, vp._createAt(n, 0)); } unwrap(t) { this._assertWriterUsedCorrectly(); if (t.parent === null) { throw new N("writer-unwrap-element-no-parent", this); } this.move(Bp._createIn(t), this.createPositionAfter(t)); this.remove(t); } addMarker(t, e) { this._assertWriterUsedCorrectly(); if (!e || typeof e.usingOperation != "boolean") { throw new N("writer-addmarker-no-usingoperation", this); } const n = e.usingOperation; const i = e.range; const o = e.affectsData === undefined ? false : e.affectsData; if (this.model.markers.has(t)) { throw new N("writer-addmarker-marker-exists", this); } if (!i) { throw new N("writer-addmarker-no-range", this); } if (!n) { return this.model.markers._set(t, i, n, o); } cA(this, t, null, i, o); return this.model.markers.get(t); } updateMarker(t, e) { this._assertWriterUsedCorrectly(); const n = typeof t == "string" ? t : t.name; const i = this.model.markers.get(n); if (!i) { throw new N("writer-updatemarker-marker-not-exists", this); } if (!e) { z("writer-updatemarker-reconvert-using-editingcontroller", { markerName: n, }); this.model.markers._refresh(i); return; } const o = typeof e.usingOperation == "boolean"; const r = typeof e.affectsData == "boolean"; const s = r ? e.affectsData : i.affectsData; if (!o && !e.range && !r) { throw new N("writer-updatemarker-wrong-options", this); } const a = i.getRange(); const c = e.range ? e.range : a; if (o && e.usingOperation !== i.managedUsingOperations) { if (e.usingOperation) { cA(this, n, null, c, s); } else { cA(this, n, a, null, s); this.model.markers._set(n, c, undefined, s); } return; } if (i.managedUsingOperations) { cA(this, n, a, c, s); } else { this.model.markers._set(n, c, undefined, s); } } removeMarker(t) { this._assertWriterUsedCorrectly(); const e = typeof t == "string" ? t : t.name; if (!this.model.markers.has(e)) { throw new N("writer-removemarker-no-marker", this); } const n = this.model.markers.get(e); if (!n.managedUsingOperations) { this.model.markers._remove(e); return; } const i = n.getRange(); cA(this, e, i, null, n.affectsData); } addRoot(t, e = "$root") { this._assertWriterUsedCorrectly(); const n = this.model.document.getRoot(t); if (n && n.isAttached()) { throw new N("writer-addroot-root-exists", this); } const i = this.model.document; const o = new xw(t, e, true, i, i.version); this.batch.addOperation(o); this.model.applyOperation(o); return this.model.document.getRoot(t); } detachRoot(t) { this._assertWriterUsedCorrectly(); const e = typeof t == "string" ? this.model.document.getRoot(t) : t; if (!e || !e.isAttached()) { throw new N("writer-detachroot-no-root", this); } for (const t of this.model.markers) { if (t.getRange().root === e) { this.removeMarker(t); } } for (const t of e.getAttributeKeys()) { this.removeAttribute(t, e); } this.remove(this.createRangeIn(e)); const n = this.model.document; const i = new xw(e.rootName, e.name, false, n, n.version); this.batch.addOperation(i); this.model.applyOperation(i); } setSelection(...t) { this._assertWriterUsedCorrectly(); this.model.document.selection._setTo(...t); } setSelectionFocus(t, e) { this._assertWriterUsedCorrectly(); this.model.document.selection._setFocus(t, e); } setSelectionAttribute(t, e) { this._assertWriterUsedCorrectly(); if (typeof t === "string") { this._setSelectionAttribute(t, e); } else { for (const [e, n] of ad(t)) { this._setSelectionAttribute(e, n); } } } removeSelectionAttribute(t) { this._assertWriterUsedCorrectly(); if (typeof t === "string") { this._removeSelectionAttribute(t); } else { for (const e of t) { this._removeSelectionAttribute(e); } } } overrideSelectionGravity() { return this.model.document.selection._overrideGravity(); } restoreSelectionGravity(t) { this.model.document.selection._restoreGravity(t); } _setSelectionAttribute(t, e) { const n = this.model.document.selection; if (n.isCollapsed && n.anchor.parent.isEmpty) { const i = Zp._getStoreAttributeKey(t); this.setAttribute(i, e, n.anchor.parent); } n._setAttribute(t, e); } _removeSelectionAttribute(t) { const e = this.model.document.selection; if (e.isCollapsed && e.anchor.parent.isEmpty) { const n = Zp._getStoreAttributeKey(t); this.removeAttribute(n, e.anchor.parent); } e._removeAttribute(t); } _assertWriterUsedCorrectly() { if (this.model._currentWriter !== this) { throw new N("writer-incorrect-use", this); } } _addOperationForAffectedMarkers(t, e) { for (const n of this.model.markers) { if (!n.managedUsingOperations) { continue; } const i = n.getRange(); let o = false; if (t === "move") { const t = e; o = t.containsPosition(i.start) || t.start.isEqual(i.start) || t.containsPosition(i.end) || t.end.isEqual(i.end); } else { const t = e; const n = t.nodeBefore; const r = t.nodeAfter; const s = i.start.parent == n && i.start.isAtEnd; const a = i.end.parent == r && i.end.offset == 0; const c = i.end.nodeAfter == r; const l = i.start.nodeAfter == r; o = s || a || c || l; } if (o) { this.updateMarker(n.name, { range: i }); } } } } function sA(t, e, n, i) { const o = t.model; const r = o.document; let s = i.start; let a; let c; let l; for (const t of i.getWalker({ shallow: true })) { l = t.item.getAttribute(e); if (a && c != l) { if (c != n) { d(); } s = a; } a = t.nextPosition; c = l; } if (a instanceof vp && a != s && c != n) { d(); } function d() { const i = new Bp(s, a); const l = i.root.document ? r.version : null; const d = new _w(i, e, c, n, l); t.batch.addOperation(d); o.applyOperation(d); } } function aA(t, e, n, i) { const o = t.model; const r = o.document; const s = i.getAttribute(e); let a, c; if (s != n) { const l = i.root === i; if (l) { const t = i.document ? r.version : null; c = new yw(i, e, s, n, t); } else { a = new Bp(vp._createBefore(i), t.createPositionAfter(i)); const o = a.root.document ? r.version : null; c = new _w(a, e, s, n, o); } t.batch.addOperation(c); o.applyOperation(c); } } function cA(t, e, n, i, o) { const r = t.model; const s = r.document; const a = new bw(e, n, i, r.markers, !!o, s.version); t.batch.addOperation(a); r.applyOperation(a); } function lA(t, e, n, i) { let o; if (t.root.document) { const n = i.document; const r = new vp(n.graveyard, [0]); o = new gw(t, e, r, n.version); } else { o = new nA(t, e); } n.addOperation(o); i.applyOperation(o); } function dA(t, e) { if (t === e) { return true; } if (t instanceof Qw && e instanceof Qw) { return true; } return false; } function uA(t, e, n = {}) { if (e.isCollapsed) { return; } const i = e.getFirstRange(); if (i.root.rootName == "$graveyard") { return; } const o = t.schema; t.change((t) => { if (!n.doNotResetEntireContent && yA(o, e)) { vA(t, e); return; } const r = {}; if (!n.doNotAutoparagraph) { const t = e.getSelectedElement(); if (t) { Object.assign( r, o.getAttributesWithProperty(t, "copyOnReplace", true) ); } } const [s, a] = hA(i); if (!s.isTouching(a)) { t.remove(t.createRange(s, a)); } if (!n.leaveUnmerged) { gA(t, s, a); o.removeDisallowedAttributes(s.parent.getChildren(), t); } xA(t, e, s); if (!n.doNotAutoparagraph && AA(o, s)) { CA(t, s, e, r); } s.detach(); a.detach(); }); } function hA(t) { const e = t.root.document.model; const n = t.start; let i = t.end; if (e.hasContent(t, { ignoreMarkers: true })) { const n = mA(i); if (n && i.isTouching(e.createPositionAt(n, 0))) { const n = e.createSelection(t); e.modifySelection(n, { direction: "backward" }); const o = n.getLastPosition(); const r = e.createRange(o, i); if (!e.hasContent(r, { ignoreMarkers: true })) { i = o; } } } return [jw.fromPosition(n, "toPrevious"), jw.fromPosition(i, "toNext")]; } function mA(t) { const e = t.parent; const n = e.root.document.model.schema; const i = e.getAncestors({ parentFirst: true, includeSelf: true }); for (const t of i) { if (n.isLimit(t)) { return null; } if (n.isBlock(t)) { return t; } } } function gA(t, e, n) { const i = t.model; if (!bA(t.model.schema, e, n)) { return; } const [o, r] = wA(e, n); if (!o || !r) { return; } if ( !i.hasContent(o, { ignoreMarkers: true }) && i.hasContent(r, { ignoreMarkers: true }) ) { pA(t, e, n, o.parent); } else { fA(t, e, n, o.parent); } } function fA(t, e, n, i) { const o = e.parent; const r = n.parent; if (o == i || r == i) { return; } e = t.createPositionAfter(o); n = t.createPositionBefore(r); if (!n.isEqual(e)) { t.insert(r, e); } t.merge(e); while (n.parent.isEmpty) { const e = n.parent; n = t.createPositionBefore(e); t.remove(e); } if (!bA(t.model.schema, e, n)) { return; } fA(t, e, n, i); } function pA(t, e, n, i) { const o = e.parent; const r = n.parent; if (o == i || r == i) { return; } e = t.createPositionAfter(o); n = t.createPositionBefore(r); if (!n.isEqual(e)) { t.insert(o, n); } while (e.parent.isEmpty) { const n = e.parent; e = t.createPositionBefore(n); t.remove(n); } n = t.createPositionBefore(r); kA(t, n); if (!bA(t.model.schema, e, n)) { return; } pA(t, e, n, i); } function kA(t, e) { const n = e.nodeBefore; const i = e.nodeAfter; if (n.name != i.name) { t.rename(n, i.name); } t.clearAttributes(n); t.setAttributes(Object.fromEntries(i.getAttributes()), n); t.merge(e); } function bA(t, e, n) { const i = e.parent; const o = n.parent; if (i == o) { return false; } if (t.isLimit(i) || t.isLimit(o)) { return false; } return _A(e, n, t); } function wA(t, e) { const n = t.getAncestors(); const i = e.getAncestors(); let o = 0; while (n[o] && n[o] == i[o]) { o++; } return [n[o], i[o]]; } function AA(t, e) { const n = t.checkChild(e, "$text"); const i = t.checkChild(e, "paragraph"); return !n && i; } function _A(t, e, n) { const i = new Bp(t, e); for (const t of i.getWalker()) { if (n.isLimit(t.item)) { return false; } } return true; } function CA(t, e, n, i = {}) { const o = t.createElement("paragraph"); t.model.schema.setAllowedAttributes(o, i, t); t.insert(o, e); xA(t, n, t.createPositionAt(o, 0)); } function vA(t, e) { const n = t.model.schema.getLimitElement(e); t.remove(t.createRangeIn(n)); CA(t, t.createPositionAt(n, 0), e); } function yA(t, e) { const n = t.getLimitElement(e); if (!e.containsEntireContent(n)) { return false; } const i = e.getFirstRange(); if (i.start.parent == i.end.parent) { return false; } return t.checkChild(n, "paragraph"); } function xA(t, e, n) { if (e instanceof Zp) { t.setSelection(n); } else { e.setTo(n); } } function EA(t, e) { return t.change((t) => { const n = t.createDocumentFragment(); const i = e.getFirstRange(); if (!i || i.isCollapsed) { return n; } const o = i.start.root; const r = i.start.getCommonPath(i.end); const s = o.getNodeByPath(r); let a; if (i.start.parent == i.end.parent) { a = i; } else { a = t.createRange( t.createPositionAt(s, i.start.path[r.length]), t.createPositionAt(s, i.end.path[r.length] + 1) ); } const c = a.end.offset - a.start.offset; for (const e of a.getItems({ shallow: true })) { if (e.is("$textProxy")) { t.appendText(e.data, e.getAttributes(), n); } else { t.append(t.cloneElement(e, true), n); } } if (a != i) { const e = i._getTransformedByMove( a.start, t.createPositionAt(n, 0), c )[0]; const o = t.createRange(t.createPositionAt(n, 0), e.start); const r = t.createRange(e.end, t.createPositionAt(n, "end")); DA(r, t); DA(o, t); } return n; }); } function DA(t, e) { const n = []; Array.from(t.getItems({ direction: "backward" })) .map((t) => e.createRangeOn(t)) .filter((e) => { const n = (e.start.isAfter(t.start) || e.start.isEqual(t.start)) && (e.end.isBefore(t.end) || e.end.isEqual(t.end)); return n; }) .forEach((t) => { n.push(t.start.parent); e.remove(t); }); n.forEach((t) => { let n = t; while (n.parent && n.isEmpty) { const t = e.createRangeOn(n); n = n.parent; e.remove(t); } }); } function SA(t, e, n) { return t.change((i) => { const o = n ? n : t.document.selection; if (!o.isCollapsed) { t.deleteContent(o, { doNotAutoparagraph: true }); } const r = new TA(t, i, o.anchor); const s = []; let a; if (e.is("documentFragment")) { if (e.markers.size) { const t = []; for (const [n, i] of e.markers) { const { start: e, end: o } = i; const r = e.isEqual(o); t.push( { position: e, name: n, isCollapsed: r }, { position: o, name: n, isCollapsed: r } ); } t.sort(({ position: t }, { position: e }) => t.isBefore(e) ? 1 : -1 ); for (const { position: n, name: o, isCollapsed: r } of t) { let t = null; let a = null; const c = n.parent === e && n.isAtStart; const l = n.parent === e && n.isAtEnd; if (!c && !l) { t = i.createElement("$marker"); i.insert(t, n); } else if (r) { a = c ? "start" : "end"; } s.push({ name: o, element: t, collapsed: a }); } } a = e.getChildren(); } else { a = [e]; } r.handleNodes(a); let c = r.getSelectionRange(); if (e.is("documentFragment") && s.length) { const t = c ? Wp.fromRange(c) : null; const e = {}; for (let t = s.length - 1; t >= 0; t--) { const { name: n, element: o, collapsed: a } = s[t]; const c = !e[n]; if (c) { e[n] = []; } if (o) { const t = i.createPositionAt(o, "before"); e[n].push(t); i.remove(o); } else { const t = r.getAffectedRange(); if (!t) { if (a) { e[n].push(r.position); } continue; } if (a) { e[n].push(t[a]); } else { e[n].push(c ? t.start : t.end); } } } for (const [t, [n, o]] of Object.entries(e)) { if ( n && o && n.root === o.root && n.root.document && !i.model.markers.has(t) ) { i.addMarker(t, { usingOperation: true, affectsData: true, range: new Bp(n, o), }); } } if (t) { c = t.toRange(); t.detach(); } } if (c) { if (o instanceof Zp) { i.setSelection(c); } else { o.setTo(c); } } else { } const l = r.getAffectedRange() || t.createRange(o.anchor); r.destroy(); return l; }); } class TA { constructor(t, e, n) { this._firstNode = null; this._lastNode = null; this._lastAutoParagraph = null; this._filterAttributesOf = []; this._affectedStart = null; this._affectedEnd = null; this._nodeToSelect = null; this.model = t; this.writer = e; this.position = n; this.canMergeWith = new Set([this.position.parent]); this.schema = t.schema; this._documentFragment = e.createDocumentFragment(); this._documentFragmentPosition = e.createPositionAt( this._documentFragment, 0 ); } handleNodes(t) { for (const e of Array.from(t)) { this._handleNode(e); } this._insertPartialFragment(); if (this._lastAutoParagraph) { this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph); } this._mergeOnRight(); this.schema.removeDisallowedAttributes( this._filterAttributesOf, this.writer ); this._filterAttributesOf = []; } _updateLastNodeFromAutoParagraph(t) { const e = this.writer.createPositionAfter(this._lastNode); const n = this.writer.createPositionAfter(t); if (n.isAfter(e)) { this._lastNode = t; if (this.position.parent != t || !this.position.isAtEnd) { throw new N("insertcontent-invalid-insertion-position", this); } this.position = n; this._setAffectedBoundaries(this.position); } } getSelectionRange() { if (this._nodeToSelect) { return Bp._createOn(this._nodeToSelect); } return this.model.schema.getNearestSelectionRange(this.position); } getAffectedRange() { if (!this._affectedStart) { return null; } return new Bp(this._affectedStart, this._affectedEnd); } destroy() { if (this._affectedStart) { this._affectedStart.detach(); } if (this._affectedEnd) { this._affectedEnd.detach(); } } _handleNode(t) { if (this.schema.isObject(t)) { this._handleObject(t); return; } let e = this._checkAndAutoParagraphToAllowedPosition(t); if (!e) { e = this._checkAndSplitToAllowedPosition(t); if (!e) { this._handleDisallowedNode(t); return; } } this._appendToFragment(t); if (!this._firstNode) { this._firstNode = t; } this._lastNode = t; } _insertPartialFragment() { if (this._documentFragment.isEmpty) { return; } const t = jw.fromPosition(this.position, "toNext"); this._setAffectedBoundaries(this.position); if (this._documentFragment.getChild(0) == this._firstNode) { this.writer.insert(this._firstNode, this.position); this._mergeOnLeft(); this.position = t.toPosition(); } if (!this._documentFragment.isEmpty) { this.writer.insert(this._documentFragment, this.position); } this._documentFragmentPosition = this.writer.createPositionAt( this._documentFragment, 0 ); this.position = t.toPosition(); t.detach(); } _handleObject(t) { if (this._checkAndSplitToAllowedPosition(t)) { this._appendToFragment(t); } else { this._tryAutoparagraphing(t); } } _handleDisallowedNode(t) { if (t.is("element")) { this.handleNodes(t.getChildren()); } else { this._tryAutoparagraphing(t); } } _appendToFragment(t) { if (!this.schema.checkChild(this.position, t)) { throw new N("insertcontent-wrong-position", this, { node: t, position: this.position, }); } this.writer.insert(t, this._documentFragmentPosition); this._documentFragmentPosition = this._documentFragmentPosition.getShiftedBy(t.offsetSize); if ( this.schema.isObject(t) && !this.schema.checkChild(this.position, "$text") ) { this._nodeToSelect = t; } else { this._nodeToSelect = null; } this._filterAttributesOf.push(t); } _setAffectedBoundaries(t) { if (!this._affectedStart) { this._affectedStart = jw.fromPosition(t, "toPrevious"); } if (!this._affectedEnd || this._affectedEnd.isBefore(t)) { if (this._affectedEnd) { this._affectedEnd.detach(); } this._affectedEnd = jw.fromPosition(t, "toNext"); } } _mergeOnLeft() { const t = this._firstNode; if (!(t instanceof wp)) { return; } if (!this._canMergeLeft(t)) { return; } const e = jw._createBefore(t); e.stickiness = "toNext"; const n = jw.fromPosition(this.position, "toNext"); if (this._affectedStart.isEqual(e)) { this._affectedStart.detach(); this._affectedStart = jw._createAt( e.nodeBefore, "end", "toPrevious" ); } if (this._firstNode === this._lastNode) { this._firstNode = e.nodeBefore; this._lastNode = e.nodeBefore; } this.writer.merge(e); if ( e.isEqual(this._affectedEnd) && this._firstNode === this._lastNode ) { this._affectedEnd.detach(); this._affectedEnd = jw._createAt(e.nodeBefore, "end", "toNext"); } this.position = n.toPosition(); n.detach(); this._filterAttributesOf.push(this.position.parent); e.detach(); } _mergeOnRight() { const t = this._lastNode; if (!(t instanceof wp)) { return; } if (!this._canMergeRight(t)) { return; } const e = jw._createAfter(t); e.stickiness = "toNext"; if (!this.position.isEqual(e)) { throw new N("insertcontent-invalid-insertion-position", this); } this.position = vp._createAt(e.nodeBefore, "end"); const n = jw.fromPosition(this.position, "toPrevious"); if (this._affectedEnd.isEqual(e)) { this._affectedEnd.detach(); this._affectedEnd = jw._createAt(e.nodeBefore, "end", "toNext"); } if (this._firstNode === this._lastNode) { this._firstNode = e.nodeBefore; this._lastNode = e.nodeBefore; } this.writer.merge(e); if ( e.getShiftedBy(-1).isEqual(this._affectedStart) && this._firstNode === this._lastNode ) { this._affectedStart.detach(); this._affectedStart = jw._createAt(e.nodeBefore, 0, "toPrevious"); } this.position = n.toPosition(); n.detach(); this._filterAttributesOf.push(this.position.parent); e.detach(); } _canMergeLeft(t) { const e = t.previousSibling; return ( e instanceof wp && this.canMergeWith.has(e) && this.model.schema.checkMerge(e, t) ); } _canMergeRight(t) { const e = t.nextSibling; return ( e instanceof wp && this.canMergeWith.has(e) && this.model.schema.checkMerge(t, e) ); } _tryAutoparagraphing(t) { const e = this.writer.createElement("paragraph"); if ( this._getAllowedIn(this.position.parent, e) && this.schema.checkChild(e, t) ) { e._appendChild(t); this._handleNode(e); } } _checkAndAutoParagraphToAllowedPosition(t) { if (this.schema.checkChild(this.position.parent, t)) { return true; } if ( !this.schema.checkChild(this.position.parent, "paragraph") || !this.schema.checkChild("paragraph", t) ) { return false; } this._insertPartialFragment(); const e = this.writer.createElement("paragraph"); this.writer.insert(e, this.position); this._setAffectedBoundaries(this.position); this._lastAutoParagraph = e; this.position = this.writer.createPositionAt(e, 0); return true; } _checkAndSplitToAllowedPosition(t) { const e = this._getAllowedIn(this.position.parent, t); if (!e) { return false; } if (e != this.position.parent) { this._insertPartialFragment(); } while (e != this.position.parent) { if (this.position.isAtStart) { const t = this.position.parent; this.position = this.writer.createPositionBefore(t); if (t.isEmpty && t.parent === e) { this.writer.remove(t); } } else if (this.position.isAtEnd) { this.position = this.writer.createPositionAfter( this.position.parent ); } else { const t = this.writer.createPositionAfter(this.position.parent); this._setAffectedBoundaries(this.position); this.writer.split(this.position); this.position = t; this.canMergeWith.add(this.position.nodeAfter); } } return true; } _getAllowedIn(t, e) { if (this.schema.checkChild(t, e)) { return t; } if (this.schema.isLimit(t)) { return null; } return this._getAllowedIn(t.parent, e); } } function BA(t, e, n, i = {}) { if (!t.schema.isObject(e)) { throw new N("insertobject-element-not-an-object", t, { object: e }); } const o = n ? n : t.document.selection; let r = o; if (i.findOptimalPosition && t.schema.isBlock(e)) { r = t.createSelection( t.schema.findOptimalInsertionRange(o, i.findOptimalPosition) ); } const s = id(o.getSelectedBlocks()); const a = {}; if (s) { Object.assign( a, t.schema.getAttributesWithProperty(s, "copyOnReplace", true) ); } return t.change((n) => { if (!r.isCollapsed) { t.deleteContent(r, { doNotAutoparagraph: true }); } let o = e; const s = r.anchor.parent; if ( !t.schema.checkChild(s, e) && t.schema.checkChild(s, "paragraph") && t.schema.checkChild("paragraph", e) ) { o = n.createElement("paragraph"); n.insert(e, o); } t.schema.setAllowedAttributes(o, a, n); const c = t.insertContent(o, r); if (c.isCollapsed) { return c; } if (i.setSelection) { MA(n, e, i.setSelection, a); } return c; }); } function MA(t, e, n, i) { const o = t.model; if (n == "on") { t.setSelection(e, "on"); return; } if (n != "after") { throw new N("insertobject-invalid-place-parameter-value", o); } let r = e.nextSibling; if (o.schema.isInline(e)) { t.setSelection(e, "after"); return; } const s = r && o.schema.checkChild(r, "$text"); if (!s && o.schema.checkChild(e.parent, "paragraph")) { r = t.createElement("paragraph"); o.schema.setAllowedAttributes(r, i, t); o.insertContent(r, t.createPositionAfter(e)); } if (r) { t.setSelection(r, 0); } } const IA = ' ,.?!:;"-()'; function LA(t, e, n = {}) { const i = t.schema; const o = n.direction != "backward"; const r = n.unit ? n.unit : "character"; const s = !!n.treatEmojiAsSingleUnit; const a = e.focus; const c = new _p({ boundaries: RA(a, o), singleCharacters: true, direction: o ? "forward" : "backward", }); const l = { walker: c, schema: i, isForward: o, unit: r, treatEmojiAsSingleUnit: s, }; let d; while ((d = c.next())) { if (d.done) { return; } const n = NA(l, d.value); if (n) { if (e instanceof Zp) { t.change((t) => { t.setSelectionFocus(n); }); } else { e.setFocus(n); } return; } } } function NA(t, e) { const { isForward: n, walker: i, unit: o, schema: r, treatEmojiAsSingleUnit: s, } = t; const { type: a, item: c, nextPosition: l } = e; if (a == "text") { if (t.unit === "word") { return PA(i, n); } return zA(i, o, s); } if (a == (n ? "elementStart" : "elementEnd")) { if (r.isSelectable(c)) { return vp._createAt(c, n ? "after" : "before"); } if (r.checkChild(l, "$text")) { return l; } } else { if (r.isLimit(c)) { i.skip(() => true); return; } if (r.checkChild(l, "$text")) { return l; } } } function zA(t, e, n) { const i = t.position.textNode; if (i) { const o = i.data; let r = t.position.offset - i.startOffset; while ( fd(o, r) || (e == "character" && pd(o, r)) || (n && bd(o, r)) ) { t.next(); r = t.position.offset - i.startOffset; } } return t.position; } function PA(t, e) { let n = t.position.textNode; if (!n) { n = e ? t.position.nodeAfter : t.position.nodeBefore; } while (n && n.is("$text")) { const i = t.position.offset - n.startOffset; if (OA(n, i, e)) { n = e ? t.position.nodeAfter : t.position.nodeBefore; } else if (VA(n.data, i, e)) { break; } else { t.next(); } } return t.position; } function RA(t, e) { const n = t.root; const i = vp._createAt(n, e ? "end" : 0); if (e) { return new Bp(t, i); } else { return new Bp(i, t); } } function VA(t, e, n) { const i = e + (n ? 0 : -1); return IA.includes(t.charAt(i)); } function OA(t, e, n) { return e === (n ? t.offsetSize : 0); } class FA extends mt() { constructor() { super(); this.markers = new tA(); this.document = new Jw(this); this.schema = new Tb(); this._pendingChanges = []; this._currentWriter = null; [ "deleteContent", "modifySelection", "getSelectedContent", "applyOperation", ].forEach((t) => this.decorate(t)); this.on( "applyOperation", (t, e) => { const n = e[0]; n._validate(); }, { priority: "highest" } ); this.schema.register("$root", { isLimit: true }); this.schema.register("$container", { allowIn: ["$root", "$container"], }); this.schema.register("$block", { allowIn: ["$root", "$container"], isBlock: true, }); this.schema.register("$blockObject", { allowWhere: "$block", isBlock: true, isObject: true, }); this.schema.register("$inlineObject", { allowWhere: "$text", allowAttributesOf: "$text", isInline: true, isObject: true, }); this.schema.register("$text", { allowIn: "$block", isInline: true, isContent: true, }); this.schema.register("$clipboardHolder", { allowContentOf: "$root", allowChildren: "$text", isLimit: true, }); this.schema.register("$documentFragment", { allowContentOf: "$root", allowChildren: "$text", isLimit: true, }); this.schema.register("$marker"); this.schema.addChildCheck((t, e) => { if (e.name === "$marker") { return true; } }); fb(this); this.document.registerPostFixer(Wk); this.on("insertContent", (t, [e, n]) => { t.return = SA(this, e, n); }); this.on("insertObject", (t, [e, n, i]) => { t.return = BA(this, e, n, i); }); this.on("canEditAt", (t) => { const e = !this.document.isReadOnly; t.return = e; if (!e) { t.stop(); } }); } change(t) { try { if (this._pendingChanges.length === 0) { this._pendingChanges.push({ batch: new $w(), callback: t }); return this._runPendingChanges()[0]; } else { return t(this._currentWriter); } } catch (t) { N.rethrowUnexpectedError(t, this); } } enqueueChange(t, e) { try { if (!t) { t = new $w(); } else if (typeof t === "function") { e = t; t = new $w(); } else if (!(t instanceof $w)) { t = new $w(t); } this._pendingChanges.push({ batch: t, callback: e }); if (this._pendingChanges.length == 1) { this._runPendingChanges(); } } catch (t) { N.rethrowUnexpectedError(t, this); } } applyOperation(t) { t._execute(); } insertContent(t, e, n, ...i) { const o = jA(e, n); return this.fire("insertContent", [t, o, n, ...i]); } insertObject(t, e, n, i, ...o) { const r = jA(e, n); return this.fire("insertObject", [t, r, i, i, ...o]); } deleteContent(t, e) { uA(this, t, e); } modifySelection(t, e) { LA(this, t, e); } getSelectedContent(t) { return EA(this, t); } hasContent(t, e = {}) { const n = t instanceof Bp ? t : Bp._createIn(t); if (n.isCollapsed) { return false; } const { ignoreWhitespaces: i = false, ignoreMarkers: o = false } = e; if (!o) { for (const t of this.markers.getMarkersIntersectingRange(n)) { if (t.affectsData) { return true; } } } for (const t of n.getItems()) { if (this.schema.isContent(t)) { if (t.is("$textProxy")) { if (!i) { return true; } else if (t.data.search(/\S/) !== -1) { return true; } } else { return true; } } } return false; } canEditAt(t) { const e = jA(t); return this.fire("canEditAt", [e]); } createPositionFromPath(t, e, n) { return new vp(t, e, n); } createPositionAt(t, e) { return vp._createAt(t, e); } createPositionAfter(t) { return vp._createAfter(t); } createPositionBefore(t) { return vp._createBefore(t); } createRange(t, e) { return new Bp(t, e); } createRangeIn(t) { return Bp._createIn(t); } createRangeOn(t) { return Bp._createOn(t); } createSelection(...t) { return new Vp(...t); } createBatch(t) { return new $w(t); } createOperationFromJSON(t) { return Dw.fromJSON(t, this.document); } destroy() { this.document.destroy(); this.stopListening(); } _runPendingChanges() { const t = []; this.fire("_beforeChanges"); try { while (this._pendingChanges.length) { const e = this._pendingChanges[0].batch; this._currentWriter = new rA(this, e); const n = this._pendingChanges[0].callback(this._currentWriter); t.push(n); this.document._handleChangeBlock(this._currentWriter); this._pendingChanges.shift(); this._currentWriter = null; } } finally { this._pendingChanges.length = 0; this._currentWriter = null; this.fire("_afterChanges"); } return t; } } function jA(t, e) { if (!t) { return; } if (t instanceof Vp || t instanceof Zp) { return t; } if (t instanceof fp) { if (e || e === 0) { return new Vp(t, e); } else if (t.is("rootElement")) { return new Vp(t, "in"); } else { return new Vp(t, "on"); } } return new Vp(t); } class HA extends Bg { constructor() { super(...arguments); this.domEventType = "click"; } onDomEvent(t) { this.fire(t.type, t); } } class UA extends Bg { constructor() { super(...arguments); this.domEventType = ["mousedown", "mouseup", "mouseover", "mouseout"]; } onDomEvent(t) { this.fire(t.type, t); } } class $A { constructor(t) { this.document = t; } createDocumentFragment(t) { return new Bm(this.document, t); } createElement(t, e, n) { return new Gh(this.document, t, e, n); } createText(t) { return new zu(this.document, t); } clone(t, e = false) { return t._clone(e); } appendChild(t, e) { return e._appendChild(t); } insertChild(t, e, n) { return n._insertChild(t, e); } removeChildren(t, e, n) { return n._removeChildren(t, e); } remove(t) { const e = t.parent; if (e) { return this.removeChildren(e.getChildIndex(t), 1, e); } return []; } replace(t, e) { const n = t.parent; if (n) { const i = n.getChildIndex(t); this.removeChildren(i, 1, n); this.insertChild(i, e, n); return true; } return false; } unwrapElement(t) { const e = t.parent; if (e) { const n = e.getChildIndex(t); this.remove(t); this.insertChild(n, t.getChildren(), e); } } rename(t, e) { const n = new Gh( this.document, t, e.getAttributes(), e.getChildren() ); return this.replace(e, n) ? n : null; } setAttribute(t, e, n) { n._setAttribute(t, e); } removeAttribute(t, e) { e._removeAttribute(t); } addClass(t, e) { e._addClass(t); } removeClass(t, e) { e._removeClass(t); } setStyle(t, e, n) { if (fe(t) && n === undefined) { e._setStyle(t); } else { n._setStyle(t, e); } } removeStyle(t, e) { e._removeStyle(t); } setCustomProperty(t, e, n) { n._setCustomProperty(t, e); } removeCustomProperty(t, e) { return e._removeCustomProperty(t); } createPositionAt(t, e) { return im._createAt(t, e); } createPositionAfter(t) { return im._createAfter(t); } createPositionBefore(t) { return im._createBefore(t); } createRange(t, e) { return new om(t, e); } createRangeOn(t) { return om._createOn(t); } createRangeIn(t) { return om._createIn(t); } createSelection(...t) { return new sm(...t); } } const qA = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i; const WA = /^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i; const GA = /^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i; const KA = /^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i; const YA = /^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i; const QA = /\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi; const ZA = new Set([ "black", "silver", "gray", "white", "maroon", "red", "purple", "fuchsia", "green", "lime", "olive", "yellow", "navy", "blue", "teal", "aqua", "orange", "aliceblue", "antiquewhite", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "gainsboro", "ghostwhite", "gold", "goldenrod", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "limegreen", "linen", "magenta", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "oldlace", "olivedrab", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "thistle", "tomato", "turquoise", "violet", "wheat", "whitesmoke", "yellowgreen", "activeborder", "activecaption", "appworkspace", "background", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "captiontext", "graytext", "highlight", "highlighttext", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infobackground", "infotext", "menu", "menutext", "scrollbar", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "window", "windowframe", "windowtext", "rebeccapurple", "currentcolor", "transparent", ]); function JA(t) { if (t.startsWith("#")) { return qA.test(t); } if (t.startsWith("rgb")) { return WA.test(t) || GA.test(t); } if (t.startsWith("hsl")) { return KA.test(t) || YA.test(t); } return ZA.has(t.toLowerCase()); } const XA = [ "none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset", ]; function t_(t) { return XA.includes(t); } const e_ = /^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/; function n_(t) { return e_.test(t); } const i_ = /^[+-]?[0-9]*([.][0-9]+)?%$/; function o_(t) { return i_.test(t); } const r_ = [ "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", ]; function s_(t) { return r_.includes(t); } const a_ = ["center", "top", "bottom", "left", "right"]; function c_(t) { return a_.includes(t); } const l_ = ["fixed", "scroll", "local"]; function d_(t) { return l_.includes(t); } const u_ = /^url\(/; function h_(t) { return u_.test(t); } function m_(t = "") { if (t === "") { return { top: undefined, right: undefined, bottom: undefined, left: undefined, }; } const e = k_(t); const n = e[0]; const i = e[2] || n; const o = e[1] || n; const r = e[3] || o; return { top: n, bottom: i, right: o, left: r }; } function g_(t) { return (e) => { const { top: n, right: i, bottom: o, left: r } = e; const s = []; if (![n, i, r, o].every((t) => !!t)) { if (n) { s.push([t + "-top", n]); } if (i) { s.push([t + "-right", i]); } if (o) { s.push([t + "-bottom", o]); } if (r) { s.push([t + "-left", r]); } } else { s.push([t, f_(e)]); } return s; }; } function f_({ top: t, right: e, bottom: n, left: i }) { const o = []; if (i !== e) { o.push(t, e, n, i); } else if (n !== t) { o.push(t, e, n); } else if (e !== t) { o.push(t, e); } else { o.push(t); } return o.join(" "); } function p_(t) { return (e) => ({ path: t, value: m_(e) }); } function k_(t) { const e = t.matchAll(QA); return Array.from(e).map((t) => t[0]); } function b_(t) { t.setNormalizer("background", w_()); t.setNormalizer("background-color", A_()); t.setReducer("background", __()); t.setStyleRelation("background", ["background-color"]); } function w_() { return (t) => { const e = {}; const n = k_(t); for (const t of n) { if (s_(t)) { e.repeat = e.repeat || []; e.repeat.push(t); } else if (c_(t)) { e.position = e.position || []; e.position.push(t); } else if (d_(t)) { e.attachment = t; } else if (JA(t)) { e.color = t; } else if (h_(t)) { e.image = t; } } return { path: "background", value: e }; }; } function A_() { return (t) => ({ path: "background.color", value: t }); } function __() { return (t) => { const e = []; e.push(["background-color", t.color]); return e; }; } function C_(t) { t.setNormalizer("border", v_()); t.setNormalizer("border-top", y_("top")); t.setNormalizer("border-right", y_("right")); t.setNormalizer("border-bottom", y_("bottom")); t.setNormalizer("border-left", y_("left")); t.setNormalizer("border-color", x_("color")); t.setNormalizer("border-width", x_("width")); t.setNormalizer("border-style", x_("style")); t.setNormalizer("border-top-color", D_("color", "top")); t.setNormalizer("border-top-style", D_("style", "top")); t.setNormalizer("border-top-width", D_("width", "top")); t.setNormalizer("border-right-color", D_("color", "right")); t.setNormalizer("border-right-style", D_("style", "right")); t.setNormalizer("border-right-width", D_("width", "right")); t.setNormalizer("border-bottom-color", D_("color", "bottom")); t.setNormalizer("border-bottom-style", D_("style", "bottom")); t.setNormalizer("border-bottom-width", D_("width", "bottom")); t.setNormalizer("border-left-color", D_("color", "left")); t.setNormalizer("border-left-style", D_("style", "left")); t.setNormalizer("border-left-width", D_("width", "left")); t.setExtractor("border-top", S_("top")); t.setExtractor("border-right", S_("right")); t.setExtractor("border-bottom", S_("bottom")); t.setExtractor("border-left", S_("left")); t.setExtractor("border-top-color", "border.color.top"); t.setExtractor("border-right-color", "border.color.right"); t.setExtractor("border-bottom-color", "border.color.bottom"); t.setExtractor("border-left-color", "border.color.left"); t.setExtractor("border-top-width", "border.width.top"); t.setExtractor("border-right-width", "border.width.right"); t.setExtractor("border-bottom-width", "border.width.bottom"); t.setExtractor("border-left-width", "border.width.left"); t.setExtractor("border-top-style", "border.style.top"); t.setExtractor("border-right-style", "border.style.right"); t.setExtractor("border-bottom-style", "border.style.bottom"); t.setExtractor("border-left-style", "border.style.left"); t.setReducer("border-color", g_("border-color")); t.setReducer("border-style", g_("border-style")); t.setReducer("border-width", g_("border-width")); t.setReducer("border-top", I_("top")); t.setReducer("border-right", I_("right")); t.setReducer("border-bottom", I_("bottom")); t.setReducer("border-left", I_("left")); t.setReducer("border", M_()); t.setStyleRelation("border", [ "border-color", "border-style", "border-width", "border-top", "border-right", "border-bottom", "border-left", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", "border-top-style", "border-right-style", "border-bottom-style", "border-left-style", "border-top-width", "border-right-width", "border-bottom-width", "border-left-width", ]); t.setStyleRelation("border-color", [ "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", ]); t.setStyleRelation("border-style", [ "border-top-style", "border-right-style", "border-bottom-style", "border-left-style", ]); t.setStyleRelation("border-width", [ "border-top-width", "border-right-width", "border-bottom-width", "border-left-width", ]); t.setStyleRelation("border-top", [ "border-top-color", "border-top-style", "border-top-width", ]); t.setStyleRelation("border-right", [ "border-right-color", "border-right-style", "border-right-width", ]); t.setStyleRelation("border-bottom", [ "border-bottom-color", "border-bottom-style", "border-bottom-width", ]); t.setStyleRelation("border-left", [ "border-left-color", "border-left-style", "border-left-width", ]); } function v_() { return (t) => { const { color: e, style: n, width: i } = B_(t); return { path: "border", value: { color: m_(e), style: m_(n), width: m_(i) }, }; }; } function y_(t) { return (e) => { const { color: n, style: i, width: o } = B_(e); const r = {}; if (n !== undefined) { r.color = { [t]: n }; } if (i !== undefined) { r.style = { [t]: i }; } if (o !== undefined) { r.width = { [t]: o }; } return { path: "border", value: r }; }; } function x_(t) { return (e) => ({ path: "border", value: E_(e, t) }); } function E_(t, e) { return { [e]: m_(t) }; } function D_(t, e) { return (n) => ({ path: "border", value: { [t]: { [e]: n } } }); } function S_(t) { return (e, n) => { if (n.border) { return T_(n.border, t); } }; } function T_(t, e) { const n = {}; if (t.width && t.width[e]) { n.width = t.width[e]; } if (t.style && t.style[e]) { n.style = t.style[e]; } if (t.color && t.color[e]) { n.color = t.color[e]; } return n; } function B_(t) { const e = {}; const n = k_(t); for (const t of n) { if (n_(t) || /thin|medium|thick/.test(t)) { e.width = t; } else if (t_(t)) { e.style = t; } else { e.color = t; } } return e; } function M_() { return (e) => { const n = T_(e, "top"); const i = T_(e, "right"); const o = T_(e, "bottom"); const r = T_(e, "left"); const s = [n, i, o, r]; const a = { width: t(s, "width"), style: t(s, "style"), color: t(s, "color"), }; const c = L_(a, "all"); if (c.length) { return c; } const l = Object.entries(a).reduce((t, [e, n]) => { if (n) { t.push([`border-${e}`, n]); s.forEach((t) => delete t[e]); } return t; }, []); return [ ...l, ...L_(n, "top"), ...L_(i, "right"), ...L_(o, "bottom"), ...L_(r, "left"), ]; }; function t(t, e) { return t.map((t) => t[e]).reduce((t, e) => (t == e ? t : null)); } } function I_(t) { return (e) => L_(e, t); } function L_(t, e) { const n = []; if (t && t.width) { n.push("width"); } if (t && t.style) { n.push("style"); } if (t && t.color) { n.push("color"); } if (n.length == 3) { const i = n.map((e) => t[e]).join(" "); return [e == "all" ? ["border", i] : [`border-${e}`, i]]; } if (e == "all") { return []; } return n.map((n) => [`border-${e}-${n}`, t[n]]); } function N_(t) { t.setNormalizer("margin", p_("margin")); t.setNormalizer("margin-top", (t) => ({ path: "margin.top", value: t, })); t.setNormalizer("margin-right", (t) => ({ path: "margin.right", value: t, })); t.setNormalizer("margin-bottom", (t) => ({ path: "margin.bottom", value: t, })); t.setNormalizer("margin-left", (t) => ({ path: "margin.left", value: t, })); t.setReducer("margin", g_("margin")); t.setStyleRelation("margin", [ "margin-top", "margin-right", "margin-bottom", "margin-left", ]); } function z_(t) { t.setNormalizer("padding", p_("padding")); t.setNormalizer("padding-top", (t) => ({ path: "padding.top", value: t, })); t.setNormalizer("padding-right", (t) => ({ path: "padding.right", value: t, })); t.setNormalizer("padding-bottom", (t) => ({ path: "padding.bottom", value: t, })); t.setNormalizer("padding-left", (t) => ({ path: "padding.left", value: t, })); t.setReducer("padding", g_("padding")); t.setStyleRelation("padding", [ "padding-top", "padding-right", "padding-bottom", "padding-left", ]); } class P_ { constructor(t, e = {}) { this.skipComments = true; this.namespaces = e.namespaces || []; this.domParser = new DOMParser(); this.domConverter = new wg(t, { renderingMode: "data" }); this.htmlWriter = new Jb(); } toData(t) { const e = this.domConverter.viewToDom(t); return this.htmlWriter.getHtml(e); } toView(t) { const e = this._toDom(t); return this.domConverter.domToView(e, { keepOriginalCase: true, skipComments: this.skipComments, }); } registerRawContentMatcher(t) { this.domConverter.registerRawContentMatcher(t); } useFillerType(t) { this.domConverter.blockFillerMode = t == "marked" ? "markedNbsp" : "nbsp"; } _toDom(t) { const e = this.namespaces.map((t) => `xmlns:${t}="nsp"`).join(" "); t = `${t}`; const n = this.domParser.parseFromString(t, "text/xml"); const i = n.querySelector("parsererror"); if (i) { throw new Error("Parse error - " + i.textContent); } const o = n.createDocumentFragment(); const r = n.documentElement.childNodes; while (r.length > 0) { o.appendChild(r[0]); } return o; } } const R_ = "["; const V_ = "]"; const O_ = "{"; const F_ = "}"; const j_ = { container: Zh, attribute: wm, empty: Cm, ui: ym, raw: Sm }; const H_ = { setContentOf: (t, e) => { t.innerHTML = e; }, }; function U_(t, e = {}) { if (!(t instanceof mp)) { throw new TypeError( "View needs to be an instance of module:engine/view/view~View." ); } const n = t.document; const i = !!e.withoutSelection; const o = e.rootName || "main"; const r = n.getRoot(o); const s = { showType: e.showType, showPriority: e.showPriority, renderUIElements: e.renderUIElements, renderRawElements: e.renderRawElements, ignoreRoot: true, domConverter: e.domConverter, }; return i ? U_._stringify(r, null, s) : U_._stringify(r, n.selection, s); } U_._stringify = q_; function $_(t, e, n = {}) { if (!(t instanceof mp)) { throw new TypeError( "View needs to be an instance of module:engine/view/view~View." ); } const i = t.document; const o = n.rootName || "main"; const r = i.getRoot(o); t.change((t) => { const n = $_._parse(e, { rootElement: r }); if (n.view && n.selection) { t.setSelection(n.selection); } }); } $_._parse = W_; function q_(t, e = null, n = {}) { let i; if (e instanceof im || e instanceof om) { i = new am(e); } else { i = e; } const o = new K_(t, i, n); return o.stringify(); } function W_(t, e = {}) { const n = new pm(new Uh()); e.order = e.order || []; const i = new G_({ sameSelectionCharacters: e.sameSelectionCharacters, }); const o = new P_(n, { namespaces: Object.keys(j_) }); let r = o.toView(t); r = Y_(r); if (e.rootElement) { const t = e.rootElement; const n = r._removeChildren(0, r.childCount); t._removeChildren(0, t.childCount); t._appendChild(n); r = t; } const s = i.parse(r, e.order); if (r.is("documentFragment") && r.childCount === 1) { r = r.getChild(0); } if (s.length) { const t = new am(s, { backward: !!e.lastRangeBackward }); return { view: r, selection: t }; } if (r.parent) { r._remove(); } return r; } class G_ { constructor(t) { this.sameSelectionCharacters = !!t.sameSelectionCharacters; } parse(t, e) { this._positions = []; this._getPositions(t); let n = this._createRanges(); if (e.length) { if (e.length != n.length) { throw new Error( `Parse error - there are ${n.length} ranges found, but ranges order array contains ${e.length} elements.` ); } n = this._sortRanges(n, e); } return n; } _getPositions(t) { if (t.is("documentFragment") || t.is("element")) { const e = [...t.getChildren()]; for (const t of e) { this._getPositions(t); } } if (t.is("$text")) { const e = new RegExp(`[${O_}${F_}\\${V_}\\${R_}]`, "g"); let n = t.data; let i; let o = 0; const r = []; while ((i = e.exec(n))) { const t = i.index; const e = i[0]; r.push({ bracket: e, textOffset: t - o }); o++; } n = n.replace(e, ""); t._data = n; const s = t.index; const a = t.parent; if (!n) { t._remove(); } for (const e of r) { if (n) { if ( this.sameSelectionCharacters || (!this.sameSelectionCharacters && (e.bracket == O_ || e.bracket == F_)) ) { this._positions.push({ bracket: e.bracket, position: new im(t, e.textOffset), }); } else { if ( !this.sameSelectionCharacters && e.textOffset !== 0 && e.textOffset !== n.length ) { throw new Error( `Parse error - range delimiter '${e.bracket}' is placed inside text node.` ); } const t = e.textOffset === 0 ? s : s + 1; this._positions.push({ bracket: e.bracket, position: new im(a, t), }); } } else { if ( (!this.sameSelectionCharacters && e.bracket == O_) || e.bracket == F_ ) { throw new Error( `Parse error - text range delimiter '${e.bracket}' is placed inside empty text node. ` ); } this._positions.push({ bracket: e.bracket, position: new im(a, s), }); } } } } _sortRanges(t, e) { const n = []; let i = 0; for (const o of e) { if (t[o - 1] === undefined) { throw new Error( "Parse error - provided ranges order is invalid." ); } n[o - 1] = t[i]; i++; } return n; } _createRanges() { const t = []; let e = null; for (const n of this._positions) { if (!e && (n.bracket == V_ || n.bracket == F_)) { throw new Error( `Parse error - end of range was found '${n.bracket}' but range was not started before.` ); } if (e && (n.bracket == R_ || n.bracket == O_)) { throw new Error( `Parse error - start of range was found '${n.bracket}' but one range is already started.` ); } if (n.bracket == R_ || n.bracket == O_) { e = new om(n.position, n.position); } else { e.end = n.position; t.push(e); e = null; } } if (e !== null) { throw new Error( "Parse error - range was started but no end delimiter was found." ); } return t; } } class K_ { constructor(t, e, n) { this.root = t; this.selection = e; this.ranges = []; if (e) { this.ranges = [...e.getRanges()]; } this.showType = !!n.showType; this.showPriority = !!n.showPriority; this.showAttributeElementId = !!n.showAttributeElementId; this.ignoreRoot = !!n.ignoreRoot; this.sameSelectionCharacters = !!n.sameSelectionCharacters; this.renderUIElements = !!n.renderUIElements; this.renderRawElements = !!n.renderRawElements; this.domConverter = n.domConverter || H_; } stringify() { let t = ""; this._walkView(this.root, (e) => { t += e; }); return t; } _walkView(t, e) { const n = this.ignoreRoot && this.root === t; if (t.is("element") || t.is("documentFragment")) { if (t.is("element") && !n) { e(this._stringifyElementOpen(t)); } if (this.renderUIElements && t.is("uiElement")) { e(t.render(document, this.domConverter).innerHTML); } else if (this.renderRawElements && t.is("rawElement")) { const n = document.createElement("div"); t.render(n, this.domConverter); e(n.innerHTML); } else { let n = 0; e(this._stringifyElementRanges(t, n)); for (const i of t.getChildren()) { this._walkView(i, e); n++; e(this._stringifyElementRanges(t, n)); } } if (t.is("element") && !n) { e(this._stringifyElementClose(t)); } } if (t.is("$text")) { e(this._stringifyTextRanges(t)); } } _stringifyElementRanges(t, e) { let n = ""; let i = ""; let o = ""; for (const r of this.ranges) { if (r.start.parent == t && r.start.offset === e) { if (r.isCollapsed) { o += R_ + V_; } else { n += R_; } } if (r.end.parent === t && r.end.offset === e && !r.isCollapsed) { i += V_; } } return i + o + n; } _stringifyTextRanges(t) { const e = t.data.length; const n = t.data.split(""); let i, o; if (this.sameSelectionCharacters) { i = R_; o = V_; } else { i = O_; o = F_; } n[e] = ""; const r = n.map((t) => ({ letter: t, start: "", end: "", collapsed: "", })); for (const n of this.ranges) { const s = n.start; const a = n.end; if (s.parent == t && s.offset >= 0 && s.offset <= e) { if (n.isCollapsed) { r[a.offset].collapsed += i + o; } else { r[s.offset].start += i; } } if ( a.parent == t && a.offset >= 0 && a.offset <= e && !n.isCollapsed ) { r[a.offset].end += o; } } return r .map((t) => t.end + t.collapsed + t.start + t.letter) .join(""); } _stringifyElementOpen(t) { const e = this._stringifyElementPriority(t); const n = this._stringifyElementId(t); const i = this._stringifyElementType(t); const o = [i, t.name].filter((t) => t !== "").join(":"); const r = this._stringifyElementAttributes(t); const s = [o, e, n, r]; return `<${s.filter((t) => t !== "").join(" ")}>`; } _stringifyElementClose(t) { const e = this._stringifyElementType(t); const n = [e, t.name].filter((t) => t !== "").join(":"); return ``; } _stringifyElementType(t) { if (this.showType) { for (const e in j_) { if (t instanceof j_[e]) { return e; } } } return ""; } _stringifyElementPriority(t) { if (this.showPriority && t.is("attributeElement")) { return `view-priority="${t.priority}"`; } return ""; } _stringifyElementId(t) { if (this.showAttributeElementId && t.is("attributeElement") && t.id) { return `view-id="${t.id}"`; } return ""; } _stringifyElementAttributes(t) { const e = []; const n = [...t.getAttributeKeys()].sort(); for (const i of n) { let n; if (i === "class") { n = [...t.getClassNames()].sort().join(" "); } else if (i === "style") { n = [...t.getStyleNames()] .sort() .map((e) => `${e}:${t.getStyle(e).replace(/"/g, """)}`) .join(";"); } else { n = t.getAttribute(i); } e.push(`${i}="${n}"`); } return e.join(" "); } } function Y_(t) { if (t.is("element") || t.is("documentFragment")) { const e = t.is("documentFragment") ? new Bm(t.document) : Q_(t.document, t); for (const n of [...t.getChildren()]) { if (e.is("emptyElement")) { throw new Error( "Parse error - cannot parse inside EmptyElement." ); } else if (e.is("uiElement")) { throw new Error("Parse error - cannot parse inside UIElement."); } else if (e.is("rawElement")) { throw new Error("Parse error - cannot parse inside RawElement."); } e._appendChild(Y_(n)); } return e; } return t; } function Q_(t, e) { const n = Z_(e); const i = j_[n.type]; const o = i ? new i(t, n.name) : new Gh(t, n.name); if (o.is("attributeElement")) { if (n.priority !== null) { o._priority = n.priority; } if (n.id !== null) { o._id = n.id; } } for (const t of e.getAttributeKeys()) { o._setAttribute(t, e.getAttribute(t)); } return o; } function Z_(t) { const e = t.name.split(":"); const n = X_(t.getAttribute("view-priority")); const i = t.hasAttribute("view-id") ? t.getAttribute("view-id") : null; t._removeAttribute("view-priority"); t._removeAttribute("view-id"); if (e.length == 1) { return { name: e[0], type: n !== null ? "attribute" : null, priority: n, id: i, }; } const o = J_(e[0]); if (o) { return { name: e[1], type: o, priority: n, id: i }; } throw new Error( `Parse error - cannot parse element's name: ${t.name}.` ); } function J_(t) { return t in j_ ? t : null; } function X_(t) { const e = parseInt(t, 10); if (!isNaN(e)) { return e; } return null; } function tC(t, e = {}) { if (!(t instanceof FA)) { throw new TypeError( "Model needs to be an instance of module:engine/model/model~Model." ); } const n = e.rootName || "main"; const i = t.document.getRoot(n); return tC._stringify( i, e.withoutSelection ? null : t.document.selection, e.convertMarkers ? t.markers : null ); } tC._stringify = nC; function eC(t, e, n = {}) { if (!(t instanceof FA)) { throw new TypeError( "Model needs to be an instance of module:engine/model/model~Model." ); } let i; let o = null; const r = t.document.getRoot(n.rootName || "main"); const s = eC._parse(e, t.schema, { lastRangeBackward: n.lastRangeBackward, selectionAttributes: n.selectionAttributes, context: [r.name], }); if ("model" in s) { i = s.model; o = s.selection; } else { i = s; } if (n.batchType !== undefined) { t.enqueueChange(n.batchType, a); } else { t.change(a); } function a(e) { e.remove(e.createRangeIn(r)); e.insert(i, r); e.setSelection(null); e.removeSelectionAttribute(t.document.selection.getAttributeKeys()); if (o) { const t = []; for (const e of o.getRanges()) { const n = new vp(r, e.start.path); const i = new vp(r, e.end.path); t.push(new Bp(n, i)); } e.setSelection(t, { backward: o.isBackward }); if (n.selectionAttributes) { e.setSelectionAttribute(o.getAttributes()); } } } } eC._parse = iC; function nC(t, e = null, n = null) { const i = new FA(); const o = new Mp(); let r = null; let s; if (t instanceof Qw || t instanceof iA) { s = i.createRangeIn(t); } else { if (!t.parent) { const e = new iA(t); s = i.createRangeIn(e); } else { s = new Bp(i.createPositionBefore(t), i.createPositionAfter(t)); } } if (e instanceof Vp) { r = e; } else if (e instanceof Zp) { r = e; } else if (e instanceof Bp) { r = new Vp(e); } else if (e instanceof vp) { r = new Vp(e); } const a = new Uh(); const c = new mp(a); const l = c.document; const d = new em(l, "div"); d.rootName = "main"; l.roots.add(d); const u = new Np({ mapper: o, schema: i.schema }); o.bindElements(t.root, d); u.on("insert:$text", ik()); u.on("insert", ok(), { priority: "lowest" }); u.on("attribute", (t, e, n) => { if ( e.item instanceof Vp || e.item instanceof Zp || e.item.is("$textProxy") ) { const i = dk((t, { writer: n }) => n.createAttributeElement("model-text-with-attributes", { [e.attributeKey]: cC(t), }) ); i(t, e, n); } }); u.on( "insert", uk((t) => { const e = lC(t.getAttributes(), cC); return new Zh(l, t.name, e); }) ); u.on("selection", ak()); u.on("selection", ck()); u.on( "addMarker", mk((t, { writer: e }) => { const n = t.markerName + ":" + (t.isOpening ? "start" : "end"); return e.createUIElement(n); }) ); const h = new Map(); if (n) { for (const t of Array.from(n).sort((t, e) => t.name < e.name ? 1 : -1 )) { h.set(t.name, t.getRange()); } } const m = c._writer; u.convert(s, h, m); if (r) { u.convertSelection(r, n || i.markers, m); } let g = q_(d, l.selection, { sameSelectionCharacters: true }); g = g.substr(5, g.length - 11); c.destroy(); return g.replace( new RegExp("model-text-with-attributes", "g"), "$text" ); } function iC(t, e, n = {}) { const i = new Mp(); t = t.replace(new RegExp("\\$text", "g"), "model-text-with-attributes"); const o = W_(t, { sameSelectionCharacters: true, lastRangeBackward: !!n.lastRangeBackward, }); let r; let s = null; let a = null; if ("view" in o && "selection" in o) { r = o.view; s = o.selection; } else { r = o; } const c = new FA(); const l = new Yb({ schema: e }); l.on("documentFragment", oC(i)); l.on("element:model-text-with-attributes", sC()); l.on("element", rC(i)); l.on("text", sC()); let d = c.change((t) => l.convert(r.root, t, n.context || "$root")); i.bindElements(d, r.root); if (d.childCount == 1) { d = d.getChild(0); } if (s) { const t = []; for (const e of s.getRanges()) { t.push(i.toModelRange(e)); } a = new Vp(t, { backward: s.isBackward }); for (const [t, e] of ad(n.selectionAttributes || [])) { a.setAttribute(t, e); } } if (a) { return { model: d, selection: a }; } return d; } function oC(t) { return (e, n, i) => { const o = i.convertChildren(n.viewItem, n.modelCursor); t.bindElements(n.modelCursor.parent, n.viewItem); n = Object.assign(n, o); e.stop(); }; } function rC(t) { return (e, n, i) => { const o = n.viewItem.name; if (!i.schema.checkChild(n.modelCursor, o)) { throw new Error( `Element '${o}' was not allowed in given position.` ); } const r = lC(n.viewItem.getAttributes(), aC); const s = i.writer.createElement(n.viewItem.name, r); i.writer.insert(s, n.modelCursor); t.bindElements(s, n.viewItem); i.convertChildren(n.viewItem, s); n.modelRange = Bp._createOn(s); n.modelCursor = n.modelRange.end; e.stop(); }; } function sC() { return (t, e, n) => { if (!n.schema.checkChild(e.modelCursor, "$text")) { throw new Error("Text was not allowed in given position."); } let i; if (e.viewItem.is("element")) { const t = lC(e.viewItem.getAttributes(), aC); const o = e.viewItem.getChild(0); i = n.writer.createText(o.data, t); } else { i = n.writer.createText(e.viewItem.data); } n.writer.insert(i, e.modelCursor); e.modelRange = Bp._createFromPositionAndShift( e.modelCursor, i.offsetSize ); e.modelCursor = e.modelRange.end; t.stop(); }; } function aC(t) { try { return JSON.parse(t); } catch (e) { return t; } } function cC(t) { if (fe(t)) { return JSON.stringify(t); } return t; } function* lC(t, e) { for (const [n, i] of t) { yield [n, e(i)]; } } class dC { constructor() { this._commands = new Map(); } add(t, e) { this._commands.set(t, e); } get(t) { return this._commands.get(t); } execute(t, ...e) { const n = this.get(t); if (!n) { throw new N("commandcollection-command-not-found", this, { commandName: t, }); } return n.execute(...e); } *names() { yield* this._commands.keys(); } *commands() { yield* this._commands.values(); } [Symbol.iterator]() { return this._commands[Symbol.iterator](); } destroy() { for (const t of this.commands()) { t.destroy(); } } } class uC extends rd { constructor(t) { super(); this.editor = t; } set(t, e, n = {}) { if (typeof e == "string") { const t = e; e = (e, n) => { this.editor.execute(t); n(); }; } super.set(t, e, n); } } const hC = "contentEditing"; const mC = "common"; class gC { constructor(t) { this.keystrokeInfos = new Map(); this._editor = t; const e = t.config.get("menuBar.isVisible"); const n = t.locale.t; this.addKeystrokeInfoCategory({ id: hC, label: n("Content editing keystrokes"), description: n( "These keyboard shortcuts allow for quick access to content editing features." ), }); const i = [ { label: n("Close contextual balloons, dropdowns, and dialogs"), keystroke: "Esc", }, { label: n("Open the accessibility help dialog"), keystroke: "Alt+0", }, { label: n( "Move focus between form fields (inputs, buttons, etc.)" ), keystroke: [["Tab"], ["Shift+Tab"]], }, { label: n("Move focus to the toolbar, navigate between toolbars"), keystroke: "Alt+F10", mayRequireFn: true, }, { label: n("Navigate through the toolbar or menu bar"), keystroke: [ ["arrowup"], ["arrowright"], ["arrowdown"], ["arrowleft"], ], }, { label: n( "Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content." ), keystroke: [["Enter"], ["Space"]], }, ]; if (e) { i.push({ label: n( "Move focus to the menu bar, navigate between menu bars" ), keystroke: "Alt+F9", mayRequireFn: true, }); } this.addKeystrokeInfoCategory({ id: "navigation", label: n("User interface and content navigation keystrokes"), description: n( "Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface." ), groups: [{ id: "common", keystrokes: i }], }); } addKeystrokeInfoCategory({ id: t, label: e, description: n, groups: i, }) { this.keystrokeInfos.set(t, { id: t, label: e, description: n, groups: new Map(), }); this.addKeystrokeInfoGroup({ categoryId: t, id: mC }); if (i) { i.forEach((e) => { this.addKeystrokeInfoGroup({ categoryId: t, ...e }); }); } } addKeystrokeInfoGroup({ categoryId: t = hC, id: e, label: n, keystrokes: i, }) { const o = this.keystrokeInfos.get(t); if (!o) { throw new N( "accessibility-unknown-keystroke-info-category", this._editor, { groupId: e, categoryId: t } ); } o.groups.set(e, { id: e, label: n, keystrokes: i || [] }); } addKeystrokeInfos({ categoryId: t = hC, groupId: e = mC, keystrokes: n, }) { if (!this.keystrokeInfos.has(t)) { throw new N( "accessibility-unknown-keystroke-info-category", this._editor, { categoryId: t, keystrokes: n } ); } const i = this.keystrokeInfos.get(t); if (!i.groups.has(e)) { throw new N( "accessibility-unknown-keystroke-info-group", this._editor, { groupId: e, categoryId: t, keystrokes: n } ); } i.groups.get(e).keystrokes.push(...n); } } class fC extends mt() { constructor(t = {}) { super(); const e = this.constructor; const { translations: n, ...i } = e.defaultConfig || {}; const { translations: o = n, ...r } = t; const s = t.language || i.language; this._context = t.context || new mu({ language: s, translations: o }); this._context._addEditor(this, !t.context); const a = Array.from(e.builtinPlugins || []); this.config = new qa(r, i); this.config.define("plugins", a); this.config.define(this._context._getEditorConfig()); this.plugins = new hu(this, a, this._context.plugins); this.locale = this._context.locale; this.t = this.locale.t; this._readOnlyLocks = new Set(); this.commands = new dC(); this.set("state", "initializing"); this.once("ready", () => (this.state = "ready"), { priority: "high", }); this.once("destroy", () => (this.state = "destroyed"), { priority: "high", }); this.model = new FA(); this.on("change:isReadOnly", () => { this.model.document.isReadOnly = this.isReadOnly; }); const c = new Uh(); this.data = new tw(this.model, c); this.editing = new yb(this.model, c); this.editing.view.document.bind("isReadOnly").to(this); this.conversion = new nw( [this.editing.downcastDispatcher, this.data.downcastDispatcher], this.data.upcastDispatcher ); this.conversion.addAlias( "dataDowncast", this.data.downcastDispatcher ); this.conversion.addAlias( "editingDowncast", this.editing.downcastDispatcher ); this.keystrokes = new uC(this); this.keystrokes.listenTo(this.editing.view.document); this.accessibility = new gC(this); } get isReadOnly() { return this._readOnlyLocks.size > 0; } set isReadOnly(t) { throw new N("editor-isreadonly-has-no-setter"); } enableReadOnlyMode(t) { if (typeof t !== "string" && typeof t !== "symbol") { throw new N("editor-read-only-lock-id-invalid", null, { lockId: t, }); } if (this._readOnlyLocks.has(t)) { return; } this._readOnlyLocks.add(t); if (this._readOnlyLocks.size === 1) { this.fire("change:isReadOnly", "isReadOnly", true, false); } } disableReadOnlyMode(t) { if (typeof t !== "string" && typeof t !== "symbol") { throw new N("editor-read-only-lock-id-invalid", null, { lockId: t, }); } if (!this._readOnlyLocks.has(t)) { return; } this._readOnlyLocks.delete(t); if (this._readOnlyLocks.size === 0) { this.fire("change:isReadOnly", "isReadOnly", false, true); } } setData(t) { this.data.set(t); } getData(t) { return this.data.get(t); } initPlugins() { const t = this.config; const e = t.get("plugins"); const n = t.get("removePlugins") || []; const i = t.get("extraPlugins") || []; const o = t.get("substitutePlugins") || []; return this.plugins.init(e.concat(i), n, o); } destroy() { let t = Promise.resolve(); if (this.state == "initializing") { t = new Promise((t) => this.once("ready", t)); } return t .then(() => { this.fire("destroy"); this.stopListening(); this.commands.destroy(); }) .then(() => this.plugins.destroy()) .then(() => { this.model.destroy(); this.data.destroy(); this.editing.destroy(); this.keystrokes.destroy(); }) .then(() => this._context._removeEditor(this)); } execute(t, ...e) { try { return this.commands.execute(t, ...e); } catch (t) { N.rethrowUnexpectedError(t, this); } } focus() { this.editing.view.focus(); } static create(...t) { throw new Error("This is an abstract method."); } } function pC(t) { if (!Ge(t.updateSourceElement)) { throw new N("attachtoform-missing-elementapi-interface", t); } const e = t.sourceElement; if (kC(e) && e.form) { let n; const i = e.form; const o = () => t.updateSourceElement(); if (Ge(i.submit)) { n = i.submit; i.submit = () => { o(); n.apply(i); }; } i.addEventListener("submit", o); t.on("destroy", () => { i.removeEventListener("submit", o); if (n) { i.submit = n; } }); } } function kC(t) { return !!t && t.tagName.toLowerCase() === "textarea"; } function bC(t) { class e extends t { updateSourceElement(t) { if (!this.sourceElement) { throw new N("editor-missing-sourceelement", this); } const e = this.config.get("updateSourceElementOnDestroy"); const n = this.sourceElement instanceof HTMLTextAreaElement; if (!e && !n) { bc(this.sourceElement, ""); return; } const i = typeof t === "string" ? t : this.data.get(); bc(this.sourceElement, i); } } return e; } bC.updateSourceElement = bC(Object).prototype.updateSourceElement; function wC(t, e) { if (e.ckeditorInstance) { throw new CKEditorError("editor-source-element-already-used", t); } e.ckeditorInstance = t; t.once("destroy", () => { delete e.ckeditorInstance; }); } class AC extends gu { static get pluginName() { return "PendingActions"; } init() { this.set("hasAny", false); this._actions = new nd({ idProperty: "_id" }); this._actions.delegate("add", "remove").to(this); } add(t) { if (typeof t !== "string") { throw new N("pendingactions-add-invalid-message", this); } const e = new (mt())(); e.set("message", t); this._actions.add(e); this.hasAny = true; return e; } remove(t) { this._actions.remove(t); this.hasAny = !!this._actions.length; } get first() { return this._actions.get(0); } [Symbol.iterator]() { return this._actions[Symbol.iterator](); } } const _C = ''; const CC = ''; const vC = ''; const yC = ''; const xC = ''; const EC = ''; const DC = ''; const SC = ''; const TC = ''; const BC = ''; const MC = ''; const IC = ''; const LC = ''; const NC = ''; const zC = ''; const PC = ''; const RC = ''; const VC = ''; const OC = ''; const FC = ''; const jC = ''; const HC = ''; const UC = ''; const $C = ''; const qC = ''; const WC = ''; const GC = ''; const KC = ''; const YC = ''; const QC = ''; const ZC = ''; const JC = ''; const XC = ''; const tv = ''; const ev = ''; const nv = ''; const iv = ''; const ov = ''; const rv = ''; const sv = ''; const av = ''; const cv = ''; const lv = ''; const dv = ''; const uv = ''; const hv = ''; const mv = ''; const gv = ''; const fv = ''; const pv = ''; const kv = ''; const bv = ''; const wv = ''; const Av = ''; const _v = ''; const Cv = ''; const vv = ''; const yv = ''; const xv = ''; const Ev = ''; const Dv = ''; const Sv = ''; const Tv = ''; const Bv = { bold: av, cancel: _C, caption: CC, check: vC, cog: yC, colorPalette: xC, eraser: EC, history: DC, image: LC, imageUpload: NC, imageAssetManager: zC, imageUrl: PC, lowVision: SC, textAlternative: TC, loupe: BC, previousArrow: MC, nextArrow: IC, importExport: uv, paragraph: cv, plus: lv, text: dv, alignBottom: RC, alignMiddle: VC, alignTop: OC, alignLeft: FC, alignCenter: jC, alignRight: HC, alignJustify: UC, objectLeft: YC, objectCenter: qC, objectRight: QC, objectFullWidth: GC, objectInline: KC, objectBlockLeft: $C, objectBlockRight: WC, objectSizeCustom: JC, objectSizeFull: ZC, objectSizeLarge: XC, objectSizeSmall: tv, objectSizeMedium: ev, pencil: nv, pilcrow: iv, quote: ov, threeVerticalDots: rv, dragIndicator: sv, redo: hv, undo: mv, bulletedList: gv, numberedList: fv, todoList: pv, codeBlock: kv, browseFiles: bv, heading1: wv, heading2: Av, heading3: _v, heading4: Cv, heading5: vv, heading6: yv, horizontalLine: xv, html: Ev, indent: Dv, outdent: Sv, table: Tv, }; var Mv = n(3475); var Iv = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Iv.insert = "head"; Iv.singleton = true; var Lv = Zd()(Mv.A, Iv); const Nv = Mv.A.locals || {}; class zv extends nu { constructor(t) { super(t); this.set("text", undefined); this.set("for", undefined); this.id = `ck-editor__label_${T()}`; const e = this.bindTemplate; this.setTemplate({ tag: "label", attributes: { class: ["ck", "ck-label"], id: this.id, for: e.to("for"), }, children: [{ text: e.to("text") }], }); } } class Pv extends nu { constructor(t, e) { super(t); const n = t.t; const i = new zv(); i.text = n("Help Contents. To close this dialog press ESC."); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-accessibility-help-dialog__content"], "aria-labelledby": i.id, role: "document", tabindex: -1, }, children: [ ie( document, "p", {}, n( "Below, you can find a list of keyboard shortcuts that can be used in the editor." ) ), ...this._createCategories(Array.from(e.values())), i, ], }); } focus() { this.element.focus(); } _createCategories(t) { return t.map((t) => { const e = [ ie(document, "h3", {}, t.label), ...Array.from(t.groups.values()) .map((t) => this._createGroup(t)) .flat(), ]; if (t.description) { e.splice(1, 0, ie(document, "p", {}, t.description)); } return ie(document, "section", {}, e); }); } _createGroup(t) { const e = t.keystrokes .sort((t, e) => t.label.localeCompare(e.label)) .map((t) => this._createGroupRow(t)) .flat(); const n = [ie(document, "dl", {}, e)]; if (t.label) { n.unshift(ie(document, "h4", {}, t.label)); } return n; } _createGroupRow(t) { const e = this.locale.t; const n = ie(document, "dt"); const i = ie(document, "dd"); const o = Vv(t.keystroke); const r = []; for (const t of o) { r.push(t.map(Rv).join("")); } n.innerHTML = t.label; i.innerHTML = r.join(", ") + (t.mayRequireFn && a.isMac ? ` ${e("(may require Fn)")}` : ""); return [n, i]; } } function Rv(t) { return Qc(t) .split("+") .map((t) => `${t}`) .join("+"); } function Vv(t) { if (typeof t === "string") { return [[t]]; } if (typeof t[0] === "string") { return [t]; } return t; } const Ov = ''; var Fv = n(1353); var jv = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; jv.insert = "head"; jv.singleton = true; var Hv = Zd()(Fv.A, jv); const Uv = Fv.A.locals || {}; class $v extends au { constructor() { super(...arguments); this.contentView = null; } static get requires() { return [aS]; } static get pluginName() { return "AccessibilityHelp"; } init() { const t = this.editor; const e = t.locale.t; t.ui.componentFactory.add("accessibilityHelp", () => { const t = this._createButton(iy); t.set({ tooltip: true, withText: false, label: e("Accessibility help"), }); return t; }); t.ui.componentFactory.add("menuBar:accessibilityHelp", () => { const t = this._createButton(wM); t.label = e("Accessibility"); return t; }); t.keystrokes.set("Alt+0", (t, e) => { this._showDialog(); e(); }); this._setupRootLabels(); } _createButton(t) { const e = this.editor; const n = e.locale; const i = new t(n); i.set({ keystroke: "Alt+0", icon: Ov }); i.on("execute", () => this._showDialog()); return i; } _setupRootLabels() { const t = this.editor; const e = t.editing.view; const n = t.t; t.ui.on("ready", () => { e.change((t) => { for (const n of e.document.roots) { i(t, n); } }); t.on( "addRoot", (n, o) => { const r = t.editing.view.document.getRoot(o.rootName); e.change((t) => i(t, r)); }, { priority: "low" } ); }); function i(t, e) { const i = e.getAttribute("aria-label"); const o = `${i}. ${n("Press %0 for help.", [Qc("Alt+0")])}`; t.setAttribute("aria-label", o, e); } } _showDialog() { const t = this.editor; const e = t.plugins.get("Dialog"); const n = t.locale.t; if (!this.contentView) { this.contentView = new Pv(t.locale, t.accessibility.keystrokeInfos); } e.show({ id: "accessibilityHelp", className: "ck-accessibility-help-dialog", title: n("Accessibility help"), icon: Ov, hasCloseButton: true, content: this.contentView, }); } } class qv extends Ad { constructor(t, e = []) { super(e); this.locale = t; } get bodyCollectionContainer() { return this._bodyCollectionContainer; } attachToDom() { this._bodyCollectionContainer = new vd({ tag: "div", attributes: { class: ["ck", "ck-reset_all", "ck-body", "ck-rounded-corners"], dir: this.locale.uiLanguageDirection, }, children: this, }).render(); let t = document.querySelector(".ck-body-wrapper"); if (!t) { t = ie(document, "div", { class: "ck-body-wrapper" }); document.body.appendChild(t); } t.appendChild(this._bodyCollectionContainer); } detachFromDom() { super.destroy(); if (this._bodyCollectionContainer) { this._bodyCollectionContainer.remove(); } const t = document.querySelector(".ck-body-wrapper"); if (t && t.childElementCount == 0) { t.remove(); } } } var Wv = n(2191); var Gv = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Gv.insert = "head"; Gv.singleton = true; var Kv = Zd()(Wv.A, Gv); const Yv = Wv.A.locals || {}; class Qv extends nu { constructor() { super(); const t = this.bindTemplate; this.set("content", ""); this.set("viewBox", "0 0 20 20"); this.set("fillColor", ""); this.set("isColorInherited", true); this.set("isVisible", true); this.setTemplate({ tag: "svg", ns: "http://www.w3.org/2000/svg", attributes: { class: [ "ck", "ck-icon", t.if("isVisible", "ck-hidden", (t) => !t), "ck-reset_all-excluded", t.if("isColorInherited", "ck-icon_inherit-color"), ], viewBox: t.to("viewBox"), }, }); } render() { super.render(); this._updateXMLContent(); this._colorFillPaths(); this.on("change:content", () => { this._updateXMLContent(); this._colorFillPaths(); }); this.on("change:fillColor", () => { this._colorFillPaths(); }); } _updateXMLContent() { if (this.content) { const t = new DOMParser().parseFromString( this.content.trim(), "image/svg+xml" ); const e = t.querySelector("svg"); const n = e.getAttribute("viewBox"); if (n) { this.viewBox = n; } for (const { name: t, value: n } of Array.from(e.attributes)) { if (Qv.presentationalAttributeNames.includes(t)) { this.element.setAttribute(t, n); } } while (this.element.firstChild) { this.element.removeChild(this.element.firstChild); } while (e.childNodes.length > 0) { this.element.appendChild(e.childNodes[0]); } } } _colorFillPaths() { if (this.fillColor) { this.element.querySelectorAll(".ck-icon__fill").forEach((t) => { t.style.fill = this.fillColor; }); } } } Qv.presentationalAttributeNames = [ "alignment-baseline", "baseline-shift", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-rendering", "cursor", "direction", "display", "dominant-baseline", "fill", "fill-opacity", "fill-rule", "filter", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "image-rendering", "letter-spacing", "lighting-color", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "overflow", "paint-order", "pointer-events", "shape-rendering", "stop-color", "stop-opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-anchor", "text-decoration", "text-overflow", "text-rendering", "transform", "unicode-bidi", "vector-effect", "visibility", "white-space", "word-spacing", "writing-mode", ]; const Zv = Qv; class Jv extends nu { constructor() { super(); this.set({ style: undefined, text: undefined, id: undefined }); const t = this.bindTemplate; this.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-button__label"], style: t.to("style"), id: t.to("id"), }, children: [{ text: t.to("text") }], }); } } var Xv = n(8941); var ty = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; ty.insert = "head"; ty.singleton = true; var ey = Zd()(Xv.A, ty); const ny = Xv.A.locals || {}; class iy extends nu { constructor(t, e = new Jv()) { super(t); this._focusDelayed = null; const n = this.bindTemplate; const i = T(); this.set("ariaLabel", undefined); this.set("ariaLabelledBy", `ck-editor__aria-label_${i}`); this.set("class", undefined); this.set("labelStyle", undefined); this.set("icon", undefined); this.set("isEnabled", true); this.set("isOn", false); this.set("isVisible", true); this.set("isToggleable", false); this.set("keystroke", undefined); this.set("label", undefined); this.set("role", undefined); this.set("tabindex", -1); this.set("tooltip", false); this.set("tooltipPosition", "s"); this.set("type", "button"); this.set("withText", false); this.set("withKeystroke", false); this.children = this.createCollection(); this.labelView = this._setupLabelView(e); this.iconView = new Zv(); this.iconView.extendTemplate({ attributes: { class: "ck-button__icon" }, }); this.keystrokeView = this._createKeystrokeView(); this.bind("_tooltipString").to( this, "tooltip", this, "label", this, "keystroke", this._getTooltipString.bind(this) ); const o = { tag: "button", attributes: { class: [ "ck", "ck-button", n.to("class"), n.if("isEnabled", "ck-disabled", (t) => !t), n.if("isVisible", "ck-hidden", (t) => !t), n.to("isOn", (t) => (t ? "ck-on" : "ck-off")), n.if("withText", "ck-button_with-text"), n.if("withKeystroke", "ck-button_with-keystroke"), ], role: n.to("role"), type: n.to("type", (t) => (t ? t : "button")), tabindex: n.to("tabindex"), "aria-checked": n.to("ariaChecked"), "aria-label": n.to("ariaLabel"), "aria-labelledby": n.to("ariaLabelledBy"), "aria-disabled": n.if("isEnabled", true, (t) => !t), "aria-pressed": n.to("isOn", (t) => this.isToggleable ? String(!!t) : false ), "data-cke-tooltip-text": n.to("_tooltipString"), "data-cke-tooltip-position": n.to("tooltipPosition"), }, children: this.children, on: { click: n.to((t) => { if (this.isEnabled) { this.fire("execute"); } else { t.preventDefault(); } }), }, }; if (a.isSafari) { if (!this._focusDelayed) { this._focusDelayed = dd(() => this.focus(), 0); } o.on.mousedown = n.to(() => { this._focusDelayed(); }); o.on.mouseup = n.to(() => { this._focusDelayed.cancel(); }); } this.setTemplate(o); } render() { super.render(); if (this.icon) { this.iconView.bind("content").to(this, "icon"); this.children.add(this.iconView); } this.children.add(this.labelView); if (this.withKeystroke && this.keystroke) { this.children.add(this.keystrokeView); } } focus() { this.element.focus(); } destroy() { if (this._focusDelayed) { this._focusDelayed.cancel(); } super.destroy(); } _setupLabelView(t) { t.bind("text", "style", "id").to( this, "label", "labelStyle", "ariaLabelledBy" ); return t; } _createKeystrokeView() { const t = new nu(); t.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-button__keystroke"] }, children: [ { text: this.bindTemplate.to("keystroke", (t) => Qc(t)) }, ], }); return t; } _getTooltipString(t, e, n) { if (t) { if (typeof t == "string") { return t; } else { if (n) { n = Qc(n); } if (t instanceof Function) { return t(e, n); } else { return `${e}${n ? ` (${n})` : ""}`; } } } return ""; } } var oy = n(8613); var ry = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; ry.insert = "head"; ry.singleton = true; var sy = Zd()(oy.A, ry); const ay = oy.A.locals || {}; class cy extends iy { constructor(t) { super(t); this.isToggleable = true; this.toggleSwitchView = this._createToggleView(); this.extendTemplate({ attributes: { class: "ck-switchbutton" } }); } render() { super.render(); this.children.add(this.toggleSwitchView); } _createToggleView() { const t = new nu(); t.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-button__toggle"] }, children: [ { tag: "span", attributes: { class: ["ck", "ck-button__toggle__inner"] }, }, ], }); return t; } } class ly extends iy { constructor(t) { super(t); this.buttonView = this; this._fileInputView = new dy(t); this._fileInputView.bind("acceptedType").to(this); this._fileInputView.bind("allowMultipleFiles").to(this); this._fileInputView.delegate("done").to(this); this.on("execute", () => { this._fileInputView.open(); }); this.extendTemplate({ attributes: { class: "ck-file-dialog-button" }, }); } render() { super.render(); this.children.add(this._fileInputView); } } class dy extends nu { constructor(t) { super(t); this.set("acceptedType", undefined); this.set("allowMultipleFiles", false); const e = this.bindTemplate; this.setTemplate({ tag: "input", attributes: { class: ["ck-hidden"], type: "file", tabindex: "-1", accept: e.to("acceptedType"), multiple: e.to("allowMultipleFiles"), }, on: { change: e.to(() => { if ( this.element && this.element.files && this.element.files.length ) { this.fire("done", this.element.files); } this.element.value = ""; }), }, }); } open() { this.element.click(); } } const uy = ''; var hy = n(3283); var my = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; my.insert = "head"; my.singleton = true; var gy = Zd()(hy.A, my); const fy = hy.A.locals || {}; class py extends nu { constructor(t, e) { super(t); const n = this.bindTemplate; this.set("isCollapsed", false); this.set("label", ""); this.buttonView = this._createButtonView(); this.children = this.createCollection(); this.set("_collapsibleAriaLabelUid", undefined); if (e) { this.children.addMany(e); } this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-collapsible", n.if("isCollapsed", "ck-collapsible_collapsed"), ], }, children: [ this.buttonView, { tag: "div", attributes: { class: ["ck", "ck-collapsible__children"], role: "region", hidden: n.if("isCollapsed", "hidden"), "aria-labelledby": n.to("_collapsibleAriaLabelUid"), }, children: this.children, }, ], }); } render() { super.render(); this._collapsibleAriaLabelUid = this.buttonView.labelView.element.id; } focus() { this.buttonView.focus(); } _createButtonView() { const t = new iy(this.locale); const e = t.bindTemplate; t.set({ withText: true, icon: uy }); t.extendTemplate({ attributes: { "aria-expanded": e.to("isOn", (t) => String(t)) }, }); t.bind("label").to(this); t.bind("isOn").to(this, "isCollapsed", (t) => !t); t.on("execute", () => { this.isCollapsed = !this.isCollapsed; }); return t; } } function ky(t, e) { const n = t.t; const i = { Black: n("Black"), "Dim grey": n("Dim grey"), Grey: n("Grey"), "Light grey": n("Light grey"), White: n("White"), Red: n("Red"), Orange: n("Orange"), Yellow: n("Yellow"), "Light green": n("Light green"), Green: n("Green"), Aquamarine: n("Aquamarine"), Turquoise: n("Turquoise"), "Light blue": n("Light blue"), Blue: n("Blue"), Purple: n("Purple"), }; return e.map((t) => { const e = i[t.label]; if (e && e != t.label) { t.label = e; } return t; }); } function by(t) { return t.map(wy).filter((t) => !!t); } function wy(t) { if (typeof t === "string") { return { model: t, label: t, hasBorder: false, view: { name: "span", styles: { color: t } }, }; } else { return { model: t.color, label: t.label || t.color, hasBorder: t.hasBorder === undefined ? false : t.hasBorder, view: { name: "span", styles: { color: `${t.color}` } }, }; } } const Ay = ''; class _y extends iy { constructor(t) { super(t); const e = this.bindTemplate; this.set("color", undefined); this.set("hasBorder", false); this.icon = Ay; this.extendTemplate({ attributes: { style: { backgroundColor: e.to("color", (t) => a.isMediaForcedColors ? null : t ), }, class: [ "ck", "ck-color-grid__tile", e.if("hasBorder", "ck-color-selector__color-tile_bordered"), ], }, }); } render() { super.render(); this.iconView.fillColor = "hsl(0, 0%, 100%)"; } } var Cy = n(4239); var vy = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; vy.insert = "head"; vy.singleton = true; var yy = Zd()(Cy.A, vy); const xy = Cy.A.locals || {}; class Ey extends nu { constructor(t, e) { super(t); const n = e && e.colorDefinitions ? e.colorDefinitions : []; this.columns = e && e.columns ? e.columns : 5; const i = { gridTemplateColumns: `repeat( ${this.columns}, 1fr)` }; this.set("selectedColor", undefined); this.items = this.createCollection(); this.focusTracker = new od(); this.keystrokes = new rd(); this.items.on("add", (t, e) => { e.isOn = e.color === this.selectedColor; }); n.forEach((t) => { const e = new _y(); e.set({ color: t.color, label: t.label, tooltip: true, hasBorder: t.options.hasBorder, }); e.on("execute", () => { this.fire("execute", { value: t.color, hasBorder: t.options.hasBorder, label: t.label, }); }); this.items.add(e); }); this.setTemplate({ tag: "div", children: this.items, attributes: { class: ["ck", "ck-color-grid"], style: i }, }); this.on("change:selectedColor", (t, e, n) => { for (const t of this.items) { t.isOn = t.color === n; } }); } focus() { if (this.items.length) { this.items.first.focus(); } } focusLast() { if (this.items.length) { this.items.last.focus(); } } render() { super.render(); for (const t of this.items) { this.focusTracker.add(t.element); } this.items.on("add", (t, e) => { this.focusTracker.add(e.element); }); this.items.on("remove", (t, e) => { this.focusTracker.remove(e.element); }); this.keystrokes.listenTo(this.element); su({ keystrokeHandler: this.keystrokes, focusTracker: this.focusTracker, gridItems: this.items, numberOfColumns: this.columns, uiLanguageDirection: this.locale && this.locale.uiLanguageDirection, }); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } } var Dy = n(8156); const Sy = By; var Ty = { red: 0, orange: 60, yellow: 120, green: 180, blue: 240, purple: 300, }; function By(t) { var e, n = [], i = 1, o; if (typeof t === "string") { if (Dy[t]) { n = Dy[t].slice(); o = "rgb"; } else if (t === "transparent") { i = 0; o = "rgb"; n = [0, 0, 0]; } else if (/^#[A-Fa-f0-9]+$/.test(t)) { var r = t.slice(1); var s = r.length; var a = s <= 4; i = 1; if (a) { n = [ parseInt(r[0] + r[0], 16), parseInt(r[1] + r[1], 16), parseInt(r[2] + r[2], 16), ]; if (s === 4) { i = parseInt(r[3] + r[3], 16) / 255; } } else { n = [ parseInt(r[0] + r[1], 16), parseInt(r[2] + r[3], 16), parseInt(r[4] + r[5], 16), ]; if (s === 8) { i = parseInt(r[6] + r[7], 16) / 255; } } if (!n[0]) n[0] = 0; if (!n[1]) n[1] = 0; if (!n[2]) n[2] = 0; o = "rgb"; } else if ( (e = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec( t )) ) { var c = e[1]; var l = c === "rgb"; var r = c.replace(/a$/, ""); o = r; var s = r === "cmyk" ? 4 : r === "gray" ? 1 : 3; n = e[2] .trim() .split(/\s*[,\/]\s*|\s+/) .map(function (t, e) { if (/%$/.test(t)) { if (e === s) return parseFloat(t) / 100; if (r === "rgb") return (parseFloat(t) * 255) / 100; return parseFloat(t); } else if (r[e] === "h") { if (/deg$/.test(t)) { return parseFloat(t); } else if (Ty[t] !== undefined) { return Ty[t]; } } return parseFloat(t); }); if (c === r) n.push(1); i = l ? 1 : n[s] === undefined ? 1 : n[s]; n = n.slice(0, s); } else if (t.length > 10 && /[0-9](?:\s|\/)/.test(t)) { n = t.match(/([0-9]+)/g).map(function (t) { return parseFloat(t); }); o = t .match(/([a-z])/gi) .join("") .toLowerCase(); } } else if (!isNaN(t)) { o = "rgb"; n = [t >>> 16, (t & 65280) >>> 8, t & 255]; } else if (Array.isArray(t) || t.length) { n = [t[0], t[1], t[2]]; o = "rgb"; i = t.length === 4 ? t[3] : 1; } else if (t instanceof Object) { if (t.r != null || t.red != null || t.R != null) { o = "rgb"; n = [ t.r || t.red || t.R || 0, t.g || t.green || t.G || 0, t.b || t.blue || t.B || 0, ]; } else { o = "hsl"; n = [ t.h || t.hue || t.H || 0, t.s || t.saturation || t.S || 0, t.l || t.lightness || t.L || t.b || t.brightness, ]; } i = t.a || t.alpha || t.opacity || 1; if (t.opacity != null) i /= 100; } return { space: o, values: n, alpha: i }; } var My = n(734); var Iy = n.t(My, 2); function Ly(t, e) { if (!t) { return ""; } const n = Ry(t); if (!n) { return ""; } if (n.space === e) { return t; } if (!Vy(n)) { return ""; } const i = Iy[n.space]; const o = i[e]; if (!o) { return ""; } const r = o(n.space === "hex" ? n.hexValue : n.values); return Py(r, e); } function Ny(t) { if (!t) { return ""; } const e = Ry(t); if (!e) { return "#000"; } if (e.space === "hex") { return e.hexValue; } return Ly(t, "hex"); } function zy(t, e) { if (customElements.get(t) === undefined) { customElements.define(t, e); } } function Py(t, e) { switch (e) { case "hex": return `#${t}`; case "rgb": return `rgb( ${t[0]}, ${t[1]}, ${t[2]} )`; case "hsl": return `hsl( ${t[0]}, ${t[1]}%, ${t[2]}% )`; case "hwb": return `hwb( ${t[0]}, ${t[1]}, ${t[2]} )`; case "lab": return `lab( ${t[0]}% ${t[1]} ${t[2]} )`; case "lch": return `lch( ${t[0]}% ${t[1]} ${t[2]} )`; default: return ""; } } function Ry(t) { if (t.startsWith("#")) { const e = Sy(t); return { space: "hex", values: e.values, hexValue: t, alpha: e.alpha, }; } const e = Sy(t); if (!e.space) { return null; } return e; } function Vy(t) { return Object.keys(Iy).includes(t.space); } var Oy = n(2828); var Fy = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Fy.insert = "head"; Fy.singleton = true; var jy = Zd()(Oy.A, Fy); const Hy = Oy.A.locals || {}; class Uy extends nu { constructor(t, e) { super(t); const n = `ck-labeled-field-view-${T()}`; const i = `ck-labeled-field-view-status-${T()}`; this.fieldView = e(this, n, i); this.set("label", undefined); this.set("isEnabled", true); this.set("isEmpty", true); this.set("isFocused", false); this.set("errorText", null); this.set("infoText", null); this.set("class", undefined); this.set("placeholder", undefined); this.labelView = this._createLabelView(n); this.statusView = this._createStatusView(i); this.fieldWrapperChildren = this.createCollection([ this.fieldView, this.labelView, ]); this.bind("_statusText").to( this, "errorText", this, "infoText", (t, e) => t || e ); const o = this.bindTemplate; this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-labeled-field-view", o.to("class"), o.if("isEnabled", "ck-disabled", (t) => !t), o.if("isEmpty", "ck-labeled-field-view_empty"), o.if("isFocused", "ck-labeled-field-view_focused"), o.if("placeholder", "ck-labeled-field-view_placeholder"), o.if("errorText", "ck-error"), ], }, children: [ { tag: "div", attributes: { class: ["ck", "ck-labeled-field-view__input-wrapper"], }, children: this.fieldWrapperChildren, }, this.statusView, ], }); } _createLabelView(t) { const e = new zv(this.locale); e.for = t; e.bind("text").to(this, "label"); return e; } _createStatusView(t) { const e = new nu(this.locale); const n = this.bindTemplate; e.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-labeled-field-view__status", n.if("errorText", "ck-labeled-field-view__status_error"), n.if("_statusText", "ck-hidden", (t) => !t), ], id: t, role: n.if("errorText", "alert"), }, children: [{ text: n.to("_statusText") }], }); return e; } focus(t) { this.fieldView.focus(t); } } class $y extends nu { constructor(t) { super(t); this.set("value", undefined); this.set("id", undefined); this.set("placeholder", undefined); this.set("tabIndex", undefined); this.set("isReadOnly", false); this.set("hasError", false); this.set("ariaDescribedById", undefined); this.set("ariaLabel", undefined); this.focusTracker = new od(); this.bind("isFocused").to(this.focusTracker); this.set("isEmpty", true); const e = this.bindTemplate; this.setTemplate({ tag: "input", attributes: { class: [ "ck", "ck-input", e.if("isFocused", "ck-input_focused"), e.if("isEmpty", "ck-input-text_empty"), e.if("hasError", "ck-error"), ], id: e.to("id"), placeholder: e.to("placeholder"), tabindex: e.to("tabIndex"), readonly: e.to("isReadOnly"), "aria-invalid": e.if("hasError", true), "aria-describedby": e.to("ariaDescribedById"), "aria-label": e.to("ariaLabel"), }, on: { input: e.to((...t) => { this.fire("input", ...t); this._updateIsEmpty(); }), change: e.to(this._updateIsEmpty.bind(this)), }, }); } render() { super.render(); this.focusTracker.add(this.element); this._setDomElementValue(this.value); this._updateIsEmpty(); this.on("change:value", (t, e, n) => { this._setDomElementValue(n); this._updateIsEmpty(); }); } destroy() { super.destroy(); this.focusTracker.destroy(); } select() { this.element.select(); } focus() { this.element.focus(); } reset() { this.value = this.element.value = ""; this._updateIsEmpty(); } _updateIsEmpty() { this.isEmpty = qy(this.element); } _setDomElementValue(t) { this.element.value = !t && t !== 0 ? "" : t; } } function qy(t) { return !t.value; } var Wy = n(4071); var Gy = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Gy.insert = "head"; Gy.singleton = true; var Ky = Zd()(Wy.A, Gy); const Yy = Wy.A.locals || {}; class Qy extends $y { constructor(t) { super(t); this.set("inputMode", "text"); const e = this.bindTemplate; this.extendTemplate({ attributes: { inputmode: e.to("inputMode") } }); } } class Zy extends Qy { constructor(t) { super(t); this.extendTemplate({ attributes: { type: "text", class: ["ck-input-text"] }, }); } } class Jy extends Qy { constructor(t, { min: e, max: n, step: i } = {}) { super(t); const o = this.bindTemplate; this.set("min", e); this.set("max", n); this.set("step", i); this.extendTemplate({ attributes: { type: "number", class: ["ck-input-number"], min: o.to("min"), max: o.to("max"), step: o.to("step"), }, }); } } var Xy = n(4097); var tx = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; tx.insert = "head"; tx.singleton = true; var ex = Zd()(Xy.A, tx); const nx = Xy.A.locals || {}; class ix extends $y { constructor(t) { super(t); this._isUpdateAutoGrowHeightPending = false; const e = wc("px"); this.set("minRows", 2); this.set("maxRows", 5); this.set("_height", null); this.set("resize", "none"); this._resizeObserver = null; this.on("change:minRows", this._validateMinMaxRows.bind(this)); this.on("change:maxRows", this._validateMinMaxRows.bind(this)); const n = this.bindTemplate; this.template.tag = "textarea"; this.extendTemplate({ attributes: { class: ["ck-textarea"], style: { height: n.to("_height", (t) => (t ? e(t) : null)), resize: n.to("resize"), }, rows: n.to("minRows"), }, }); } render() { super.render(); let t = false; this.on("input", () => { this._updateAutoGrowHeight(true); this.fire("update"); }); this.on("change:value", () => { e.window.requestAnimationFrame(() => { if (!yc(this.element)) { this._isUpdateAutoGrowHeightPending = true; return; } this._updateAutoGrowHeight(); this.fire("update"); }); }); this._resizeObserver = new kc(this.element, (n) => { const i = !!n.contentRect.width && !!n.contentRect.height; if (!t && i && this._isUpdateAutoGrowHeightPending) { e.window.requestAnimationFrame(() => { this._updateAutoGrowHeight(); this.fire("update"); }); } t = i; }); } destroy() { if (this._resizeObserver) { this._resizeObserver.destroy(); } } reset() { super.reset(); this._updateAutoGrowHeight(); this.fire("update"); } _updateAutoGrowHeight(t) { const e = this.element; if (!e.offsetParent) { this._isUpdateAutoGrowHeightPending = true; return; } this._isUpdateAutoGrowHeightPending = false; const n = ox(e, "1"); const i = ox(e, e.value); const o = n.ownerDocument.defaultView.getComputedStyle(n); const r = parseFloat(o.paddingTop) + parseFloat(o.paddingBottom); const s = oc(n); const a = parseFloat(o.lineHeight); const c = s.top + s.bottom; const l = new lc(n).height; const d = Math.round((i.scrollHeight - r) / a); const u = this.maxRows * a + r + c; const h = d === 1 ? l : this.minRows * a + r + c; this._height = Math.min( Math.max(Math.max(d, this.minRows) * a + r + c, h), u ); if (t) { e.scrollTop = e.scrollHeight; } n.remove(); i.remove(); } _validateMinMaxRows() { if (this.minRows > this.maxRows) { throw new N("ui-textarea-view-min-rows-greater-than-max-rows", { textareaView: this, minRows: this.minRows, maxRows: this.maxRows, }); } } } function ox(t, e) { const n = t.cloneNode(); n.style.position = "absolute"; n.style.top = "-99999px"; n.style.left = "-99999px"; n.style.height = "auto"; n.style.overflow = "hidden"; n.style.width = t.ownerDocument.defaultView.getComputedStyle(t).width; n.tabIndex = -1; n.rows = 1; n.value = e; t.parentNode.insertBefore(n, t); return n; } class rx extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.set("isVisible", false); this.set("position", "se"); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-reset", "ck-dropdown__panel", e.to("position", (t) => `ck-dropdown__panel_${t}`), e.if("isVisible", "ck-dropdown__panel-visible"), ], tabindex: "-1", }, children: this.children, on: { selectstart: e.to((t) => { if (t.target.tagName.toLocaleLowerCase() === "input") { return; } t.preventDefault(); }), }, }); } focus() { if (this.children.length) { const t = this.children.first; if (typeof t.focus === "function") { t.focus(); } else { z("ui-dropdown-panel-focus-child-missing-focus", { childView: this.children.first, dropdownPanel: this, }); } } } focusLast() { if (this.children.length) { const t = this.children.last; if (typeof t.focusLast === "function") { t.focusLast(); } else { t.focus(); } } } } var sx = n(1887); var ax = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; ax.insert = "head"; ax.singleton = true; var cx = Zd()(sx.A, ax); const lx = sx.A.locals || {}; class dx extends nu { constructor(t, e, n) { super(t); const i = this.bindTemplate; this.buttonView = e; this.panelView = n; this.set("isOpen", false); this.set("isEnabled", true); this.set("class", undefined); this.set("id", undefined); this.set("panelPosition", "auto"); this.panelView.bind("isVisible").to(this, "isOpen"); this.keystrokes = new rd(); this.focusTracker = new od(); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-dropdown", i.to("class"), i.if("isEnabled", "ck-disabled", (t) => !t), ], id: i.to("id"), "aria-describedby": i.to("ariaDescribedById"), }, children: [e, n], }); e.extendTemplate({ attributes: { class: ["ck-dropdown__button"], "data-cke-tooltip-disabled": i.to("isOpen"), }, }); } render() { super.render(); this.focusTracker.add(this.buttonView.element); this.focusTracker.add(this.panelView.element); this.listenTo(this.buttonView, "open", () => { this.isOpen = !this.isOpen; }); this.on("change:isOpen", (t, e, n) => { if (!n) { return; } if (this.panelPosition === "auto") { const t = dx._getOptimalPosition({ element: this.panelView.element, target: this.buttonView.element, fitInViewport: true, positions: this._panelPositions, }); this.panelView.position = t ? t.name : this._panelPositions[0].name; } else { this.panelView.position = this.panelPosition; } }); this.keystrokes.listenTo(this.element); const t = (t, e) => { if (this.isOpen) { this.isOpen = false; e(); } }; this.keystrokes.set("arrowdown", (t, e) => { if (this.buttonView.isEnabled && !this.isOpen) { this.isOpen = true; e(); } }); this.keystrokes.set("arrowright", (t, e) => { if (this.isOpen) { e(); } }); this.keystrokes.set("arrowleft", t); this.keystrokes.set("esc", t); } focus() { this.buttonView.focus(); } get _panelPositions() { const { south: t, north: e, southEast: n, southWest: i, northEast: o, northWest: r, southMiddleEast: s, southMiddleWest: a, northMiddleEast: c, northMiddleWest: l, } = dx.defaultPanelPositions; if (this.locale.uiLanguageDirection !== "rtl") { return [n, i, s, a, t, o, r, c, l, e]; } else { return [i, n, a, s, t, r, o, l, c, e]; } } } dx.defaultPanelPositions = { south: (t, e) => ({ top: t.bottom, left: t.left - (e.width - t.width) / 2, name: "s", }), southEast: (t) => ({ top: t.bottom, left: t.left, name: "se" }), southWest: (t, e) => ({ top: t.bottom, left: t.left - e.width + t.width, name: "sw", }), southMiddleEast: (t, e) => ({ top: t.bottom, left: t.left - (e.width - t.width) / 4, name: "sme", }), southMiddleWest: (t, e) => ({ top: t.bottom, left: t.left - ((e.width - t.width) * 3) / 4, name: "smw", }), north: (t, e) => ({ top: t.top - e.height, left: t.left - (e.width - t.width) / 2, name: "n", }), northEast: (t, e) => ({ top: t.top - e.height, left: t.left, name: "ne", }), northWest: (t, e) => ({ top: t.top - e.height, left: t.left - e.width + t.width, name: "nw", }), northMiddleEast: (t, e) => ({ top: t.top - e.height, left: t.left - (e.width - t.width) / 4, name: "nme", }), northMiddleWest: (t, e) => ({ top: t.top - e.height, left: t.left - ((e.width - t.width) * 3) / 4, name: "nmw", }), }; dx._getOptimalPosition = xc; const ux = dx; class hx extends iy { constructor(t) { super(t); this.arrowView = this._createArrowView(); this.extendTemplate({ attributes: { "aria-haspopup": true, "aria-expanded": this.bindTemplate.to("isOn", (t) => String(t)), }, }); this.delegate("execute").to(this, "open"); } render() { super.render(); this.children.add(this.arrowView); } _createArrowView() { const t = new Zv(); t.content = uy; t.extendTemplate({ attributes: { class: "ck-dropdown__arrow" } }); return t; } } class mx extends G() { constructor(t) { super(); this.focusables = t.focusables; this.focusTracker = t.focusTracker; this.keystrokeHandler = t.keystrokeHandler; this.actions = t.actions; if (t.actions && t.keystrokeHandler) { for (const e in t.actions) { let n = t.actions[e]; if (typeof n == "string") { n = [n]; } for (const i of n) { t.keystrokeHandler.set(i, (t, n) => { this[e](); n(); }); } } } this.on("forwardCycle", () => this.focusFirst(), { priority: "low" }); this.on("backwardCycle", () => this.focusLast(), { priority: "low" }); } get first() { return this.focusables.find(gx) || null; } get last() { return this.focusables.filter(gx).slice(-1)[0] || null; } get next() { return this._getDomFocusableItem(1); } get previous() { return this._getDomFocusableItem(-1); } get current() { let t = null; if (this.focusTracker.focusedElement === null) { return null; } this.focusables.find((e, n) => { const i = e.element === this.focusTracker.focusedElement; if (i) { t = n; } return i; }); return t; } focusFirst() { this._focus(this.first, 1); } focusLast() { this._focus(this.last, -1); } focusNext() { const t = this.next; if (t && this.focusables.getIndex(t) === this.current) { this.fire("forwardCycle"); return; } if (t === this.first) { this.fire("forwardCycle"); } else { this._focus(t, 1); } } focusPrevious() { const t = this.previous; if (t && this.focusables.getIndex(t) === this.current) { this.fire("backwardCycle"); return; } if (t === this.last) { this.fire("backwardCycle"); } else { this._focus(t, -1); } } _focus(t, e) { if (t && this.focusTracker.focusedElement !== t.element) { t.focus(e); } } _getDomFocusableItem(t) { const e = this.focusables.length; if (!e) { return null; } const n = this.current; if (n === null) { return this[t === 1 ? "first" : "last"]; } let i = this.focusables.get(n); let o = (n + e + t) % e; do { const n = this.focusables.get(o); if (gx(n)) { i = n; break; } o = (o + e + t) % e; } while (o !== n); return i; } } function gx(t) { return fx(t) && yc(t.element); } function fx(t) { return !!("focus" in t && typeof t.focus == "function"); } function px(t) { return fx(t) && "focusCycler" in t && t.focusCycler instanceof mx; } class kx extends nu { constructor(t) { super(t); this.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-toolbar__separator"] }, }); } } class bx extends nu { constructor(t) { super(t); this.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-toolbar__line-break"] }, }); } } function wx(t) { return t.bindTemplate.to((e) => { if (e.target === t.element) { e.preventDefault(); } }); } function Ax(t) { if (Array.isArray(t)) { return { items: t, removeItems: [] }; } const e = { items: [], removeItems: [] }; if (!t) { return e; } return { ...e, ...t }; } var _x = n(9423); var Cx = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Cx.insert = "head"; Cx.singleton = true; var vx = Zd()(_x.A, Cx); const yx = _x.A.locals || {}; const xx = { alignLeft: Bv.alignLeft, bold: Bv.bold, importExport: Bv.importExport, paragraph: Bv.paragraph, plus: Bv.plus, text: Bv.text, threeVerticalDots: Bv.threeVerticalDots, pilcrow: Bv.pilcrow, dragIndicator: Bv.dragIndicator, }; class Ex extends nu { constructor(t, e) { super(t); const n = this.bindTemplate; const i = this.t; this.options = e || {}; this.set("ariaLabel", i("Editor toolbar")); this.set("maxWidth", "auto"); this.items = this.createCollection(); this.focusTracker = new od(); this.keystrokes = new rd(); this.set("class", undefined); this.set("isCompact", false); this.itemsView = new Dx(t); this.children = this.createCollection(); this.children.add(this.itemsView); this.focusables = this.createCollection(); const o = t.uiLanguageDirection === "rtl"; this._focusCycler = new mx({ focusables: this.focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: [o ? "arrowright" : "arrowleft", "arrowup"], focusNext: [o ? "arrowleft" : "arrowright", "arrowdown"], }, }); const r = [ "ck", "ck-toolbar", n.to("class"), n.if("isCompact", "ck-toolbar_compact"), ]; if (this.options.shouldGroupWhenFull && this.options.isFloating) { r.push("ck-toolbar_floating"); } this.setTemplate({ tag: "div", attributes: { class: r, role: "toolbar", "aria-label": n.to("ariaLabel"), style: { maxWidth: n.to("maxWidth") }, tabindex: -1, }, children: this.children, on: { mousedown: wx(this) }, }); this._behavior = this.options.shouldGroupWhenFull ? new Tx(this) : new Sx(this); } render() { super.render(); this.focusTracker.add(this.element); for (const t of this.items) { this.focusTracker.add(t.element); } this.items.on("add", (t, e) => { this.focusTracker.add(e.element); }); this.items.on("remove", (t, e) => { this.focusTracker.remove(e.element); }); this.keystrokes.listenTo(this.element); this._behavior.render(this); } destroy() { this._behavior.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); return super.destroy(); } focus() { this._focusCycler.focusFirst(); } focusLast() { this._focusCycler.focusLast(); } fillFromConfig(t, e, n) { this.items.addMany(this._buildItemsFromConfig(t, e, n)); } _buildItemsFromConfig(t, e, n) { const i = Ax(t); const o = n || i.removeItems; const r = this._cleanItemsConfiguration(i.items, e, o) .map((t) => { if (st(t)) { return this._createNestedToolbarDropdown(t, e, o); } else if (t === "|") { return new kx(); } else if (t === "-") { return new bx(); } return e.create(t); }) .filter((t) => !!t); return r; } _cleanItemsConfiguration(t, e, n) { const i = t.filter((t, i, o) => { if (t === "|") { return true; } if (n.indexOf(t) !== -1) { return false; } if (t === "-") { if (this.options.shouldGroupWhenFull) { z("toolbarview-line-break-ignored-when-grouping-items", o); return false; } return true; } if (!st(t) && !e.has(t)) { z("toolbarview-item-unavailable", { item: t }); return false; } return true; }); return this._cleanSeparatorsAndLineBreaks(i); } _cleanSeparatorsAndLineBreaks(t) { const e = (t) => t !== "-" && t !== "|"; const n = t.length; const i = t.findIndex(e); if (i === -1) { return []; } const o = n - t.slice().reverse().findIndex(e); return t.slice(i, o).filter((t, n, i) => { if (e(t)) { return true; } const o = n > 0 && i[n - 1] === t; return !o; }); } _createNestedToolbarDropdown(t, e, n) { let { label: i, icon: o, items: r, tooltip: s = true, withText: a = false, } = t; r = this._cleanItemsConfiguration(r, e, n); if (!r.length) { return null; } const c = this.locale; const l = Zx(c); if (!i) { z("toolbarview-nested-toolbar-dropdown-missing-label", t); } l.class = "ck-toolbar__nested-toolbar-dropdown"; l.buttonView.set({ label: i, tooltip: s, withText: !!a }); if (o !== false) { l.buttonView.icon = xx[o] || o || Bv.threeVerticalDots; } else { l.buttonView.withText = true; } Jx(l, () => l.toolbarView._buildItemsFromConfig(r, e, n)); return l; } } class Dx extends nu { constructor(t) { super(t); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-toolbar__items"] }, children: this.children, }); } } class Sx { constructor(t) { const e = t.bindTemplate; t.set("isVertical", false); t.itemsView.children.bindTo(t.items).using((t) => t); t.focusables.bindTo(t.items).using((t) => (fx(t) ? t : null)); t.extendTemplate({ attributes: { class: [e.if("isVertical", "ck-toolbar_vertical")] }, }); } render() {} destroy() {} } class Tx { constructor(t) { this.resizeObserver = null; this.cachedPadding = null; this.shouldUpdateGroupingOnNextResize = false; this.view = t; this.viewChildren = t.children; this.viewFocusables = t.focusables; this.viewItemsView = t.itemsView; this.viewFocusTracker = t.focusTracker; this.viewLocale = t.locale; this.ungroupedItems = t.createCollection(); this.groupedItems = t.createCollection(); this.groupedItemsDropdown = this._createGroupedItemsDropdown(); t.itemsView.children.bindTo(this.ungroupedItems).using((t) => t); this.ungroupedItems.on( "change", this._updateFocusCyclableItems.bind(this) ); t.children.on("change", this._updateFocusCyclableItems.bind(this)); t.items.on("change", (t, e) => { const n = e.index; const i = Array.from(e.added); for (const t of e.removed) { if (n >= this.ungroupedItems.length) { this.groupedItems.remove(t); } else { this.ungroupedItems.remove(t); } } for (let t = n; t < n + i.length; t++) { const e = i[t - n]; if (t > this.ungroupedItems.length) { this.groupedItems.add(e, t - this.ungroupedItems.length); } else { this.ungroupedItems.add(e, t); } } this._updateGrouping(); }); t.extendTemplate({ attributes: { class: ["ck-toolbar_grouping"] } }); } render(t) { this.viewElement = t.element; this._enableGroupingOnResize(); this._enableGroupingOnMaxWidthChange(t); } destroy() { this.groupedItemsDropdown.destroy(); this.resizeObserver.destroy(); } _updateGrouping() { if (!this.viewElement.ownerDocument.body.contains(this.viewElement)) { return; } if (!yc(this.viewElement)) { this.shouldUpdateGroupingOnNextResize = true; return; } const t = this.groupedItems.length; let e; while (this._areItemsOverflowing) { this._groupLastItem(); e = true; } if (!e && this.groupedItems.length) { while (this.groupedItems.length && !this._areItemsOverflowing) { this._ungroupFirstItem(); } if (this._areItemsOverflowing) { this._groupLastItem(); } } if (this.groupedItems.length !== t) { this.view.fire("groupedItemsUpdate"); } } get _areItemsOverflowing() { if (!this.ungroupedItems.length) { return false; } const t = this.viewElement; const n = this.viewLocale.uiLanguageDirection; const i = new lc(t.lastChild); const o = new lc(t); if (!this.cachedPadding) { const i = e.window.getComputedStyle(t); const o = n === "ltr" ? "paddingRight" : "paddingLeft"; this.cachedPadding = Number.parseInt(i[o]); } if (n === "ltr") { return i.right > o.right - this.cachedPadding; } else { return i.left < o.left + this.cachedPadding; } } _enableGroupingOnResize() { let t; this.resizeObserver = new kc(this.viewElement, (e) => { if ( !t || t !== e.contentRect.width || this.shouldUpdateGroupingOnNextResize ) { this.shouldUpdateGroupingOnNextResize = false; this._updateGrouping(); t = e.contentRect.width; } }); this._updateGrouping(); } _enableGroupingOnMaxWidthChange(t) { t.on("change:maxWidth", () => { this._updateGrouping(); }); } _groupLastItem() { if (!this.groupedItems.length) { this.viewChildren.add(new kx()); this.viewChildren.add(this.groupedItemsDropdown); this.viewFocusTracker.add(this.groupedItemsDropdown.element); } this.groupedItems.add( this.ungroupedItems.remove(this.ungroupedItems.last), 0 ); } _ungroupFirstItem() { this.ungroupedItems.add( this.groupedItems.remove(this.groupedItems.first) ); if (!this.groupedItems.length) { this.viewChildren.remove(this.groupedItemsDropdown); this.viewChildren.remove(this.viewChildren.last); this.viewFocusTracker.remove(this.groupedItemsDropdown.element); } } _createGroupedItemsDropdown() { const t = this.viewLocale; const e = t.t; const n = Zx(t); n.class = "ck-toolbar__grouped-dropdown"; n.panelPosition = t.uiLanguageDirection === "ltr" ? "sw" : "se"; Jx(n, this.groupedItems); n.buttonView.set({ label: e("Show more items"), tooltip: true, tooltipPosition: t.uiLanguageDirection === "rtl" ? "se" : "sw", icon: Bv.threeVerticalDots, }); return n; } _updateFocusCyclableItems() { this.viewFocusables.clear(); this.ungroupedItems.map((t) => { if (fx(t)) { this.viewFocusables.add(t); } }); if (this.groupedItems.length) { this.viewFocusables.add(this.groupedItemsDropdown); } } } class Bx extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.set("isVisible", true); this.children = this.createCollection(); this.setTemplate({ tag: "li", attributes: { class: [ "ck", "ck-list__item", e.if("isVisible", "ck-hidden", (t) => !t), ], role: "presentation", }, children: this.children, }); } focus() { if (this.children.first) { this.children.first.focus(); } } } class Mx extends nu { constructor(t) { super(t); this.setTemplate({ tag: "li", attributes: { class: ["ck", "ck-list__separator"] }, }); } } class Ix extends nu { constructor(t, e = new zv()) { super(t); const n = this.bindTemplate; const i = new Rx(t); this.set({ label: "", isVisible: true }); this.labelView = e; this.labelView.bind("text").to(this, "label"); this.children = this.createCollection(); this.children.addMany([this.labelView, i]); i.set({ role: "group", ariaLabelledBy: e.id }); i.focusTracker.destroy(); i.keystrokes.destroy(); this.items = i.items; this.setTemplate({ tag: "li", attributes: { role: "presentation", class: [ "ck", "ck-list__group", n.if("isVisible", "ck-hidden", (t) => !t), ], }, children: this.children, }); } focus() { if (this.items) { const t = this.items.find((t) => !(t instanceof Mx)); if (t) { t.focus(); } } } } var Lx = n(8753); var Nx = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Nx.insert = "head"; Nx.singleton = true; var zx = Zd()(Lx.A, Nx); const Px = Lx.A.locals || {}; class Rx extends nu { constructor(t) { super(t); this._listItemGroupToChangeListeners = new WeakMap(); const e = this.bindTemplate; this.focusables = new Ad(); this.items = this.createCollection(); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusCycler = new mx({ focusables: this.focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "arrowup", focusNext: "arrowdown" }, }); this.set("ariaLabel", undefined); this.set("ariaLabelledBy", undefined); this.set("role", undefined); this.setTemplate({ tag: "ul", attributes: { class: ["ck", "ck-reset", "ck-list"], role: e.to("role"), "aria-label": e.to("ariaLabel"), "aria-labelledby": e.to("ariaLabelledBy"), }, children: this.items, }); } render() { super.render(); for (const t of this.items) { if (t instanceof Ix) { this._registerFocusableItemsGroup(t); } else if (t instanceof Bx) { this._registerFocusableListItem(t); } } this.items.on("change", (t, e) => { for (const t of e.removed) { if (t instanceof Ix) { this._deregisterFocusableItemsGroup(t); } else if (t instanceof Bx) { this._deregisterFocusableListItem(t); } } for (const t of Array.from(e.added).reverse()) { if (t instanceof Ix) { this._registerFocusableItemsGroup(t, e.index); } else { this._registerFocusableListItem(t, e.index); } } }); this.keystrokes.listenTo(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this._focusCycler.focusFirst(); } focusFirst() { this._focusCycler.focusFirst(); } focusLast() { this._focusCycler.focusLast(); } _registerFocusableListItem(t, e) { this.focusTracker.add(t.element); this.focusables.add(t, e); } _deregisterFocusableListItem(t) { this.focusTracker.remove(t.element); this.focusables.remove(t); } _getOnGroupItemsChangeCallback(t) { return (e, n) => { for (const t of n.removed) { this._deregisterFocusableListItem(t); } for (const e of Array.from(n.added).reverse()) { this._registerFocusableListItem( e, this.items.getIndex(t) + n.index ); } }; } _registerFocusableItemsGroup(t, e) { Array.from(t.items).forEach((t, n) => { const i = typeof e !== "undefined" ? e + n : undefined; this._registerFocusableListItem(t, i); }); const n = this._getOnGroupItemsChangeCallback(t); this._listItemGroupToChangeListeners.set(t, n); t.items.on("change", n); } _deregisterFocusableItemsGroup(t) { for (const e of t.items) { this._deregisterFocusableListItem(e); } t.items.off("change", this._listItemGroupToChangeListeners.get(t)); this._listItemGroupToChangeListeners.delete(t); } } var Vx = n(4890); var Ox = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Ox.insert = "head"; Ox.singleton = true; var Fx = Zd()(Vx.A, Ox); const jx = Vx.A.locals || {}; class Hx extends nu { constructor(t, e) { super(t); const n = this.bindTemplate; this.set("class", undefined); this.set("labelStyle", undefined); this.set("icon", undefined); this.set("isEnabled", true); this.set("isOn", false); this.set("isToggleable", false); this.set("isVisible", true); this.set("keystroke", undefined); this.set("withKeystroke", false); this.set("label", undefined); this.set("tabindex", -1); this.set("tooltip", false); this.set("tooltipPosition", "s"); this.set("type", "button"); this.set("withText", false); this.children = this.createCollection(); this.actionView = this._createActionView(e); this.arrowView = this._createArrowView(); this.keystrokes = new rd(); this.focusTracker = new od(); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-splitbutton", n.to("class"), n.if("isVisible", "ck-hidden", (t) => !t), this.arrowView.bindTemplate.if("isOn", "ck-splitbutton_open"), ], }, children: this.children, }); } render() { super.render(); this.children.add(this.actionView); this.children.add(this.arrowView); this.focusTracker.add(this.actionView.element); this.focusTracker.add(this.arrowView.element); this.keystrokes.listenTo(this.element); this.keystrokes.set("arrowright", (t, e) => { if (this.focusTracker.focusedElement === this.actionView.element) { this.arrowView.focus(); e(); } }); this.keystrokes.set("arrowleft", (t, e) => { if (this.focusTracker.focusedElement === this.arrowView.element) { this.actionView.focus(); e(); } }); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this.actionView.focus(); } _createActionView(t) { const e = t || new iy(); if (!t) { e.bind( "icon", "isEnabled", "isOn", "isToggleable", "keystroke", "label", "tabindex", "tooltip", "tooltipPosition", "type", "withText" ).to(this); } e.extendTemplate({ attributes: { class: "ck-splitbutton__action" } }); e.delegate("execute").to(this); return e; } _createArrowView() { const t = new iy(); const e = t.bindTemplate; t.icon = uy; t.extendTemplate({ attributes: { class: ["ck-splitbutton__arrow"], "data-cke-tooltip-disabled": e.to("isOn"), "aria-haspopup": true, "aria-expanded": e.to("isOn", (t) => String(t)), }, }); t.bind("isEnabled").to(this); t.bind("label").to(this); t.bind("tooltip").to(this); t.delegate("execute").to(this, "open"); return t; } } var Ux = n(9432); var $x = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; $x.insert = "head"; $x.singleton = true; var qx = Zd()(Ux.A, $x); const Wx = Ux.A.locals || {}; var Gx = n(6571); var Kx = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Kx.insert = "head"; Kx.singleton = true; var Yx = Zd()(Gx.A, Kx); const Qx = Gx.A.locals || {}; function Zx(t, e = hx) { const n = typeof e == "function" ? new e(t) : e; const i = new rx(t); const o = new ux(t, n, i); n.bind("isEnabled").to(o); if (n instanceof Hx) { n.arrowView.bind("isOn").to(o, "isOpen"); } else { n.bind("isOn").to(o, "isOpen"); } iE(o); return o; } function Jx(t, e, n = {}) { t.extendTemplate({ attributes: { class: ["ck-toolbar-dropdown"] } }); if (t.isOpen) { Xx(t, e, n); } else { t.once("change:isOpen", () => Xx(t, e, n), { priority: "highest" }); } if (n.enableActiveItemFocusOnDropdownOpen) { nE(t, () => t.toolbarView.items.find((t) => t.isOn)); } } function Xx(t, e, n) { const i = t.locale; const o = i.t; const r = (t.toolbarView = new Ex(i)); const s = typeof e == "function" ? e() : e; r.ariaLabel = n.ariaLabel || o("Dropdown toolbar"); if (n.maxWidth) { r.maxWidth = n.maxWidth; } if (n.class) { r.class = n.class; } if (n.isCompact) { r.isCompact = n.isCompact; } if (n.isVertical) { r.isVertical = true; } if (s instanceof Ad) { r.items.bindTo(s).using((t) => t); } else { r.items.addMany(s); } t.panelView.children.add(r); r.items.delegate("execute").to(t); } function tE(t, e, n = {}) { if (t.isOpen) { eE(t, e, n); } else { t.once("change:isOpen", () => eE(t, e, n), { priority: "highest" }); } nE(t, () => t.listView.items.find((t) => { if (t instanceof Bx) { return t.children.first.isOn; } return false; }) ); } function eE(t, e, n) { const i = t.locale; const o = (t.listView = new Rx(i)); const r = typeof e == "function" ? e() : e; o.ariaLabel = n.ariaLabel; o.role = n.role; dE(t, o.items, r, i); t.panelView.children.add(o); o.items.delegate("execute").to(t); } function nE(t, e) { t.on( "change:isOpen", () => { if (!t.isOpen) { return; } const n = e(); if (!n) { return; } if (typeof n.focus === "function") { n.focus(); } else { z("ui-dropdown-focus-child-on-open-child-missing-focus", { view: n, }); } }, { priority: M.low - 10 } ); } function iE(t) { oE(t); rE(t); sE(t); aE(t); cE(t); lE(t); } function oE(t) { t.on("render", () => { iu({ emitter: t, activator: () => t.isOpen, callback: () => { t.isOpen = false; }, contextElements: () => [t.element, ...t.focusTracker._elements], }); }); } function rE(t) { t.on("execute", (e) => { if (e.source instanceof cy) { return; } t.isOpen = false; }); } function sE(t) { t.focusTracker.on("change:isFocused", (e, n, i) => { if (t.isOpen && !i) { t.isOpen = false; } }); } function aE(t) { t.keystrokes.set("arrowdown", (e, n) => { if (t.isOpen) { t.panelView.focus(); n(); } }); t.keystrokes.set("arrowup", (e, n) => { if (t.isOpen) { t.panelView.focusLast(); n(); } }); } function cE(t) { t.on("change:isOpen", (n, i, o) => { if (o) { return; } const r = t.panelView.element; if (r && r.contains(e.document.activeElement)) { t.buttonView.focus(); } }); } function lE(t) { t.on( "change:isOpen", (e, n, i) => { if (!i) { return; } t.panelView.focus(); }, { priority: "low" } ); } function dE(t, e, n, i) { e.bindTo(n).using((e) => { if (e.type === "separator") { return new Mx(i); } else if (e.type === "group") { const n = new Ix(i); n.set({ label: e.label }); dE(t, n.items, e.items, i); n.items.delegate("execute").to(t); return n; } else if (e.type === "button" || e.type === "switchbutton") { const t = new Bx(i); let n; if (e.type === "button") { n = new iy(i); n.bind("ariaChecked").to(n, "isOn"); } else { n = new cy(i); } n.bind(...Object.keys(e.model)).to(e.model); n.delegate("execute").to(t); t.children.add(n); return t; } return null; }); } const uE = (t, e, n) => { const i = new Zy(t.locale); i.set({ id: e, ariaDescribedById: n }); i.bind("isReadOnly").to(t, "isEnabled", (t) => !t); i.bind("hasError").to(t, "errorText", (t) => !!t); i.on("input", () => { t.errorText = null; }); t.bind("isEmpty", "isFocused", "placeholder").to(i); return i; }; const hE = (t, e, n) => { const i = new Jy(t.locale); i.set({ id: e, ariaDescribedById: n, inputMode: "numeric" }); i.bind("isReadOnly").to(t, "isEnabled", (t) => !t); i.bind("hasError").to(t, "errorText", (t) => !!t); i.on("input", () => { t.errorText = null; }); t.bind("isEmpty", "isFocused", "placeholder").to(i); return i; }; const mE = (t, e, n) => { const i = new TextareaView(t.locale); i.set({ id: e, ariaDescribedById: n }); i.bind("isReadOnly").to(t, "isEnabled", (t) => !t); i.bind("hasError").to(t, "errorText", (t) => !!t); i.on("input", () => { t.errorText = null; }); t.bind("isEmpty", "isFocused", "placeholder").to(i); return i; }; const gE = (t, e, n) => { const i = Zx(t.locale); i.set({ id: e, ariaDescribedById: n }); i.bind("isEnabled").to(t); return i; }; const fE = (t, e = 0, n = 1) => (t > n ? n : t < e ? e : t); const pE = (t, e = 0, n = Math.pow(10, e)) => Math.round(n * t) / n; const kE = { grad: 360 / 400, turn: 360, rad: 360 / (Math.PI * 2) }; const bE = (t) => OE(wE(t)); const wE = (t) => { if (t[0] === "#") t = t.substring(1); if (t.length < 6) { return { r: parseInt(t[0] + t[0], 16), g: parseInt(t[1] + t[1], 16), b: parseInt(t[2] + t[2], 16), a: t.length === 4 ? pE(parseInt(t[3] + t[3], 16) / 255, 2) : 1, }; } return { r: parseInt(t.substring(0, 2), 16), g: parseInt(t.substring(2, 4), 16), b: parseInt(t.substring(4, 6), 16), a: t.length === 8 ? pE(parseInt(t.substring(6, 8), 16) / 255, 2) : 1, }; }; const AE = (t, e = "deg") => Number(t) * (kE[e] || 1); const _E = (t) => { const e = /hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; const n = e.exec(t); if (!n) return { h: 0, s: 0, v: 0, a: 1 }; return vE({ h: AE(n[1], n[2]), s: Number(n[3]), l: Number(n[4]), a: n[5] === undefined ? 1 : Number(n[5]) / (n[6] ? 100 : 1), }); }; const CE = null && _E; const vE = ({ h: t, s: e, l: n, a: i }) => { e *= (n < 50 ? n : 100 - n) / 100; return { h: t, s: e > 0 ? ((2 * e) / (n + e)) * 100 : 0, v: n + e, a: i, }; }; const yE = (t) => VE(BE(t)); const xE = ({ h: t, s: e, v: n, a: i }) => { const o = ((200 - e) * n) / 100; return { h: pE(t), s: pE( o > 0 && o < 200 ? ((e * n) / 100 / (o <= 100 ? o : 200 - o)) * 100 : 0 ), l: pE(o / 2), a: pE(i, 2), }; }; const EE = (t) => { const { h: e, s: n, v: i } = FE(t); return `hsv(${e}, ${n}%, ${i}%)`; }; const DE = (t) => { const { h: e, s: n, v: i, a: o } = FE(t); return `hsva(${e}, ${n}%, ${i}%, ${o})`; }; const SE = (t) => { const { h: e, s: n, l: i } = xE(t); return `hsl(${e}, ${n}%, ${i}%)`; }; const TE = (t) => { const { h: e, s: n, l: i, a: o } = xE(t); return `hsla(${e}, ${n}%, ${i}%, ${o})`; }; const BE = ({ h: t, s: e, v: n, a: i }) => { t = (t / 360) * 6; e = e / 100; n = n / 100; const o = Math.floor(t), r = n * (1 - e), s = n * (1 - (t - o) * e), a = n * (1 - (1 - t + o) * e), c = o % 6; return { r: pE([n, s, r, r, a, n][c] * 255), g: pE([a, n, n, s, r, r][c] * 255), b: pE([r, r, a, n, n, s][c] * 255), a: pE(i, 2), }; }; const ME = (t) => { const { r: e, g: n, b: i } = BE(t); return `rgb(${e}, ${n}, ${i})`; }; const IE = (t) => { const { r: e, g: n, b: i, a: o } = BE(t); return `rgba(${e}, ${n}, ${i}, ${o})`; }; const LE = (t) => { const e = /hsva?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; const n = e.exec(t); if (!n) return { h: 0, s: 0, v: 0, a: 1 }; return FE({ h: AE(n[1], n[2]), s: Number(n[3]), v: Number(n[4]), a: n[5] === undefined ? 1 : Number(n[5]) / (n[6] ? 100 : 1), }); }; const NE = null && LE; const zE = (t) => { const e = /rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; const n = e.exec(t); if (!n) return { h: 0, s: 0, v: 0, a: 1 }; return OE({ r: Number(n[1]) / (n[2] ? 100 / 255 : 1), g: Number(n[3]) / (n[4] ? 100 / 255 : 1), b: Number(n[5]) / (n[6] ? 100 / 255 : 1), a: n[7] === undefined ? 1 : Number(n[7]) / (n[8] ? 100 : 1), }); }; const PE = null && zE; const RE = (t) => { const e = t.toString(16); return e.length < 2 ? "0" + e : e; }; const VE = ({ r: t, g: e, b: n, a: i }) => { const o = i < 1 ? RE(pE(i * 255)) : ""; return "#" + RE(t) + RE(e) + RE(n) + o; }; const OE = ({ r: t, g: e, b: n, a: i }) => { const o = Math.max(t, e, n); const r = o - Math.min(t, e, n); const s = r ? o === t ? (e - n) / r : o === e ? 2 + (n - t) / r : 4 + (t - e) / r : 0; return { h: pE(60 * (s < 0 ? s + 6 : s)), s: pE(o ? (r / o) * 100 : 0), v: pE((o / 255) * 100), a: i, }; }; const FE = (t) => ({ h: round(t.h), s: round(t.s), v: round(t.v), a: round(t.a, 2), }); const jE = ({ r: t, g: e, b: n }) => ({ r: t, g: e, b: n }); const HE = ({ h: t, s: e, l: n }) => ({ h: t, s: e, l: n }); const UE = (t) => { const { h: e, s: n, v: i } = FE(t); return { h: e, s: n, v: i }; }; const $E = (t, e) => { if (t === e) return true; for (const n in t) { if (t[n] !== e[n]) return false; } return true; }; const qE = (t, e) => t.replace(/\s/g, "") === e.replace(/\s/g, ""); const WE = (t, e) => { if (t.toLowerCase() === e.toLowerCase()) return true; return $E(wE(t), wE(e)); }; const GE = {}; const KE = (t) => { let e = GE[t]; if (!e) { e = document.createElement("template"); e.innerHTML = t; GE[t] = e; } return e; }; const YE = (t, e, n) => { t.dispatchEvent(new CustomEvent(e, { bubbles: true, detail: n })); }; let QE = false; const ZE = (t) => "touches" in t; const JE = (t) => { if (QE && !ZE(t)) return false; if (!QE) QE = ZE(t); return true; }; const XE = (t, e) => { const n = ZE(e) ? e.touches[0] : e; const i = t.el.getBoundingClientRect(); YE( t.el, "move", t.getMove({ x: fE((n.pageX - (i.left + window.pageXOffset)) / i.width), y: fE((n.pageY - (i.top + window.pageYOffset)) / i.height), }) ); }; const tD = (t, e) => { const n = e.keyCode; if (n > 40 || (t.xy && n < 37) || n < 33) return; e.preventDefault(); YE( t.el, "move", t.getMove( { x: n === 39 ? 0.01 : n === 37 ? -0.01 : n === 34 ? 0.05 : n === 33 ? -0.05 : n === 35 ? 1 : n === 36 ? -1 : 0, y: n === 40 ? 0.01 : n === 38 ? -0.01 : 0, }, true ) ); }; class eD { constructor(t, e, n, i) { const o = KE( `
` ); t.appendChild(o.content.cloneNode(true)); const r = t.querySelector(`[part=${e}]`); r.addEventListener("mousedown", this); r.addEventListener("touchstart", this); r.addEventListener("keydown", this); this.el = r; this.xy = i; this.nodes = [r.firstChild, r]; } set dragging(t) { const e = t ? document.addEventListener : document.removeEventListener; e(QE ? "touchmove" : "mousemove", this); e(QE ? "touchend" : "mouseup", this); } handleEvent(t) { switch (t.type) { case "mousedown": case "touchstart": t.preventDefault(); if (!JE(t) || (!QE && t.button != 0)) return; this.el.focus(); XE(this, t); this.dragging = true; break; case "mousemove": case "touchmove": t.preventDefault(); XE(this, t); break; case "mouseup": case "touchend": this.dragging = false; break; case "keydown": tD(this, t); break; } } style(t) { t.forEach((t, e) => { for (const n in t) { this.nodes[e].style.setProperty(n, t[n]); } }); } } class nD extends eD { constructor(t) { super( t, "hue", 'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"', false ); } update({ h: t }) { this.h = t; this.style([ { left: `${(t / 360) * 100}%`, color: SE({ h: t, s: 100, v: 100, a: 1 }), }, ]); this.el.setAttribute("aria-valuenow", `${pE(t)}`); } getMove(t, e) { return { h: e ? fE(this.h + t.x * 360, 0, 360) : 360 * t.x }; } } class iD extends eD { constructor(t) { super(t, "saturation", 'aria-label="Color"', true); } update(t) { this.hsva = t; this.style([ { top: `${100 - t.v}%`, left: `${t.s}%`, color: SE(t) }, { "background-color": SE({ h: t.h, s: 100, v: 100, a: 1 }) }, ]); this.el.setAttribute( "aria-valuetext", `Saturation ${pE(t.s)}%, Brightness ${pE(t.v)}%` ); } getMove(t, e) { return { s: e ? fE(this.hsva.s + t.x * 100, 0, 100) : t.x * 100, v: e ? fE(this.hsva.v - t.y * 100, 0, 100) : Math.round(100 - t.y * 100), }; } } const oD = `:host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:"";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}`; const rD = `[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}`; const sD = `[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}`; const aD = Symbol("same"); const cD = Symbol("color"); const lD = Symbol("hsva"); const dD = Symbol("update"); const uD = Symbol("parts"); const hD = Symbol("css"); const mD = Symbol("sliders"); class gD extends HTMLElement { static get observedAttributes() { return ["color"]; } get [hD]() { return [oD, rD, sD]; } get [mD]() { return [iD, nD]; } get color() { return this[cD]; } set color(t) { if (!this[aD](t)) { const e = this.colorModel.toHsva(t); this[dD](e); this[cD] = t; } } constructor() { super(); const t = KE(``); const e = this.attachShadow({ mode: "open" }); e.appendChild(t.content.cloneNode(true)); e.addEventListener("move", this); this[uD] = this[mD].map((t) => new t(e)); } connectedCallback() { if (this.hasOwnProperty("color")) { const t = this.color; delete this["color"]; this.color = t; } else if (!this.color) { this.color = this.colorModel.defaultColor; } } attributeChangedCallback(t, e, n) { const i = this.colorModel.fromAttr(n); if (!this[aD](i)) { this.color = i; } } handleEvent(t) { const e = this[lD]; const n = { ...e, ...t.detail }; this[dD](n); let i; if (!$E(n, e) && !this[aD]((i = this.colorModel.fromHsva(n)))) { this[cD] = i; YE(this, "color-changed", { value: i }); } } [aD](t) { return this.color && this.colorModel.equal(t, this.color); } [dD](t) { this[lD] = t; this[uD].forEach((e) => e.update(t)); } } const fD = { defaultColor: "#000", toHsva: bE, fromHsva: ({ h: t, s: e, v: n }) => yE({ h: t, s: e, v: n, a: 1 }), equal: WE, fromAttr: (t) => t, }; class pD extends gD { get colorModel() { return fD; } } var kD = n(3019); var bD = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; bD.insert = "head"; bD.singleton = true; var wD = Zd()(kD.A, bD); const AD = kD.A.locals || {}; const _D = 150; class CD extends nu { constructor(t, e = {}) { super(t); this.set({ color: "", _hexColor: "" }); this.hexInputRow = this._createInputRow(); const n = this.createCollection(); if (!e.hideInput) { n.add(this.hexInputRow); } this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-color-picker"], tabindex: -1 }, children: n, }); this._config = e; this._debounceColorPickerEvent = Zg( (t) => { this.set("color", t); this.fire("colorSelected", { color: this.color }); }, _D, { leading: true } ); this.on("set:color", (t, e, n) => { t.return = Ly(n, this._config.format || "hsl"); }); this.on("change:color", () => { this._hexColor = vD(this.color); }); this.on("change:_hexColor", () => { if (document.activeElement !== this.picker) { this.picker.setAttribute("color", this._hexColor); } if (vD(this.color) != vD(this._hexColor)) { this.color = this._hexColor; } }); } render() { super.render(); zy("hex-color-picker", pD); this.picker = e.document.createElement("hex-color-picker"); this.picker.setAttribute("class", "hex-color-picker"); this.picker.setAttribute("tabindex", "-1"); this._createSlidersView(); if (this.element) { if (this.hexInputRow.element) { this.element.insertBefore(this.picker, this.hexInputRow.element); } else { this.element.appendChild(this.picker); } const t = document.createElement("style"); t.textContent = '[role="slider"]:focus [part$="pointer"] {' + "border: 1px solid #fff;" + "outline: 1px solid var(--ck-color-focus-border);" + "box-shadow: 0 0 0 2px #fff;" + "}"; this.picker.shadowRoot.appendChild(t); } this.picker.addEventListener("color-changed", (t) => { const e = t.detail.value; this._debounceColorPickerEvent(e); }); } focus() { if (!this._config.hideInput && (a.isGecko || a.isiOS || a.isSafari)) { const t = this.hexInputRow.children.get(1); t.focus(); } const t = this.slidersView.first; t.focus(); } _createSlidersView() { const t = [...this.picker.shadowRoot.children]; const e = t.filter((t) => t.getAttribute("role") === "slider"); const n = e.map((t) => { const e = new yD(t); return e; }); this.slidersView = this.createCollection(); n.forEach((t) => { this.slidersView.add(t); }); } _createInputRow() { const t = this._createColorInput(); return new ED(this.locale, t); } _createColorInput() { const t = new Uy(this.locale, uE); const { t: e } = this.locale; t.set({ label: e("HEX"), class: "color-picker-hex-input" }); t.fieldView.bind("value").to(this, "_hexColor", (e) => { if (t.isFocused) { return t.fieldView.value; } else { return e.startsWith("#") ? e.substring(1) : e; } }); t.fieldView.on("input", () => { const e = t.fieldView.element.value; if (e) { const t = DD(e); if (t) { this._debounceColorPickerEvent(t); } } }); return t; } isValid() { const { t } = this.locale; this.resetValidationStatus(); if (!this.hexInputRow.getParsedColor()) { this.hexInputRow.inputView.errorText = t( 'Please enter a valid color (e.g. "ff0000").' ); return false; } return true; } resetValidationStatus() { this.hexInputRow.inputView.errorText = null; } } function vD(t) { let e = Ny(t); if (!e) { e = "#000"; } if (e.length === 4) { e = "#" + [e[1], e[1], e[2], e[2], e[3], e[3]].join(""); } return e.toLowerCase(); } class yD extends nu { constructor(t) { super(); this.element = t; } focus() { this.element.focus(); } } class xD extends nu { constructor(t) { super(t); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-color-picker__hash-view"] }, children: "#", }); } } class ED extends nu { constructor(t, e) { super(t); this.inputView = e; this.children = this.createCollection([new xD(), this.inputView]); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-color-picker__row"] }, children: this.children, }); } getParsedColor() { return DD(this.inputView.fieldView.element.value); } } function DD(t) { if (!t) { return null; } const e = t.trim().replace(/^#/, ""); if (![3, 4, 6, 8].includes(e.length)) { return null; } if (!/^(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})$/.test(e)) { return null; } return `#${e}`; } class SD extends mt(nd) { constructor(t) { super(t); this.set("isEmpty", true); this.on("change", () => { this.set("isEmpty", this.length === 0); }); } add(t, e) { if (this.find((e) => e.color === t.color)) { return this; } return super.add(t, e); } hasColor(t) { return !!this.find((e) => e.color === t); } } const { eraser: TD, colorPalette: BD } = Bv; class MD extends nu { constructor( t, { colors: e, columns: n, removeButtonLabel: i, documentColorsLabel: o, documentColorsCount: r, colorPickerLabel: s, focusTracker: a, focusables: c, } ) { super(t); const l = this.bindTemplate; this.set("isVisible", true); this.focusTracker = a; this.items = this.createCollection(); this.colorDefinitions = e; this.columns = n; this.documentColors = new SD(); this.documentColorsCount = r; this._focusables = c; this._removeButtonLabel = i; this._colorPickerLabel = s; this._documentColorsLabel = o; this.setTemplate({ tag: "div", attributes: { class: [ "ck-color-grids-fragment", l.if("isVisible", "ck-hidden", (t) => !t), ], }, children: this.items, }); this.removeColorButtonView = this._createRemoveColorButton(); this.items.add(this.removeColorButtonView); } updateDocumentColors(t, e) { const n = t.document; const i = this.documentColorsCount; this.documentColors.clear(); for (const o of n.getRoots()) { const n = t.createRangeIn(o); for (const t of n.getItems()) { if (t.is("$textProxy") && t.hasAttribute(e)) { this._addColorToDocumentColors(t.getAttribute(e)); if (this.documentColors.length >= i) { return; } } } } } updateSelectedColors() { const t = this.documentColorsGrid; const e = this.staticColorsGrid; const n = this.selectedColor; e.selectedColor = n; if (t) { t.selectedColor = n; } } render() { super.render(); this.staticColorsGrid = this._createStaticColorsGrid(); this.items.add(this.staticColorsGrid); if (this.documentColorsCount) { const t = vd.bind(this.documentColors, this.documentColors); const e = new zv(this.locale); e.text = this._documentColorsLabel; e.extendTemplate({ attributes: { class: [ "ck", "ck-color-grid__label", t.if("isEmpty", "ck-hidden"), ], }, }); this.items.add(e); this.documentColorsGrid = this._createDocumentColorsGrid(); this.items.add(this.documentColorsGrid); } this._createColorPickerButton(); this._addColorSelectorElementsToFocusTracker(); } focus() { this.removeColorButtonView.focus(); } destroy() { super.destroy(); } addColorPickerButton() { if (this.colorPickerButtonView) { this.items.add(this.colorPickerButtonView); this.focusTracker.add(this.colorPickerButtonView.element); this._focusables.add(this.colorPickerButtonView); } } _addColorSelectorElementsToFocusTracker() { this.focusTracker.add(this.removeColorButtonView.element); this._focusables.add(this.removeColorButtonView); if (this.staticColorsGrid) { this.focusTracker.add(this.staticColorsGrid.element); this._focusables.add(this.staticColorsGrid); } if (this.documentColorsGrid) { this.focusTracker.add(this.documentColorsGrid.element); this._focusables.add(this.documentColorsGrid); } } _createColorPickerButton() { this.colorPickerButtonView = new iy(); this.colorPickerButtonView.set({ label: this._colorPickerLabel, withText: true, icon: BD, class: "ck-color-selector__color-picker", }); this.colorPickerButtonView.on("execute", () => { this.fire("colorPicker:show"); }); } _createRemoveColorButton() { const t = new iy(); t.set({ withText: true, icon: TD, label: this._removeButtonLabel }); t.class = "ck-color-selector__remove-color"; t.on("execute", () => { this.fire("execute", { value: null, source: "removeColorButton" }); }); t.render(); return t; } _createStaticColorsGrid() { const t = new Ey(this.locale, { colorDefinitions: this.colorDefinitions, columns: this.columns, }); t.on("execute", (t, e) => { this.fire("execute", { value: e.value, source: "staticColorsGrid", }); }); return t; } _createDocumentColorsGrid() { const t = vd.bind(this.documentColors, this.documentColors); const e = new Ey(this.locale, { columns: this.columns }); e.extendTemplate({ attributes: { class: t.if("isEmpty", "ck-hidden") }, }); e.items.bindTo(this.documentColors).using((t) => { const e = new _y(); e.set({ color: t.color, hasBorder: t.options && t.options.hasBorder, }); if (t.label) { e.set({ label: t.label, tooltip: true }); } e.on("execute", () => { this.fire("execute", { value: t.color, source: "documentColorsGrid", }); }); return e; }); this.documentColors.on("change:isEmpty", (t, n, i) => { if (i) { e.selectedColor = null; } }); return e; } _addColorToDocumentColors(t) { const e = this.colorDefinitions.find((e) => e.color === t); if (!e) { this.documentColors.add({ color: t, label: t, options: { hasBorder: false }, }); } else { this.documentColors.add(Object.assign({}, e)); } } } class ID extends nu { constructor( t, { focusTracker: e, focusables: n, keystrokes: i, colorPickerViewConfig: o, } ) { super(t); this.items = this.createCollection(); this.focusTracker = e; this.keystrokes = i; this.set("isVisible", false); this.set("selectedColor", undefined); this._focusables = n; this._colorPickerViewConfig = o; const r = this.bindTemplate; const { saveButtonView: s, cancelButtonView: a } = this._createActionButtons(); this.saveButtonView = s; this.cancelButtonView = a; this.actionBarView = this._createActionBarView({ saveButtonView: s, cancelButtonView: a, }); this.setTemplate({ tag: "div", attributes: { class: [ "ck-color-picker-fragment", r.if("isVisible", "ck-hidden", (t) => !t), ], }, children: this.items, }); } render() { super.render(); const t = new CD(this.locale, { ...this._colorPickerViewConfig }); this.colorPickerView = t; this.colorPickerView.render(); if (this.selectedColor) { t.color = this.selectedColor; } this.listenTo(this, "change:selectedColor", (e, n, i) => { t.color = i; }); this.items.add(this.colorPickerView); this.items.add(this.actionBarView); this._addColorPickersElementsToFocusTracker(); this._stopPropagationOnArrowsKeys(); this._executeOnEnterPress(); this._executeUponColorChange(); } destroy() { super.destroy(); } focus() { this.colorPickerView.focus(); } resetValidationStatus() { this.colorPickerView.resetValidationStatus(); } _executeOnEnterPress() { this.keystrokes.set("enter", (t) => { if ( this.isVisible && this.focusTracker.focusedElement !== this.cancelButtonView.element && this.colorPickerView.isValid() ) { this.fire("execute", { value: this.selectedColor }); t.stopPropagation(); t.preventDefault(); } }); } _stopPropagationOnArrowsKeys() { const t = (t) => t.stopPropagation(); this.keystrokes.set("arrowright", t); this.keystrokes.set("arrowleft", t); this.keystrokes.set("arrowup", t); this.keystrokes.set("arrowdown", t); } _addColorPickersElementsToFocusTracker() { for (const t of this.colorPickerView.slidersView) { this.focusTracker.add(t.element); this._focusables.add(t); } const t = this.colorPickerView.hexInputRow.children.get(1); if (t.element) { this.focusTracker.add(t.element); this._focusables.add(t); } this.focusTracker.add(this.saveButtonView.element); this._focusables.add(this.saveButtonView); this.focusTracker.add(this.cancelButtonView.element); this._focusables.add(this.cancelButtonView); } _createActionBarView({ saveButtonView: t, cancelButtonView: e }) { const n = new nu(); const i = this.createCollection(); i.add(t); i.add(e); n.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-color-selector_action-bar"] }, children: i, }); return n; } _createActionButtons() { const t = this.locale; const e = t.t; const n = new iy(t); const i = new iy(t); n.set({ icon: Bv.check, class: "ck-button-save", type: "button", withText: false, label: e("Accept"), }); i.set({ icon: Bv.cancel, class: "ck-button-cancel", type: "button", withText: false, label: e("Cancel"), }); n.on("execute", () => { if (this.colorPickerView.isValid()) { this.fire("execute", { source: "colorPickerSaveButton", value: this.selectedColor, }); } }); i.on("execute", () => { this.fire("colorPicker:cancel"); }); return { saveButtonView: n, cancelButtonView: i }; } _executeUponColorChange() { this.colorPickerView.on("colorSelected", (t, e) => { this.fire("execute", { value: e.color, source: "colorPicker" }); this.set("selectedColor", e.color); }); } } var LD = n(2927); var ND = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; ND.insert = "head"; ND.singleton = true; var zD = Zd()(LD.A, ND); const PD = LD.A.locals || {}; class RD extends nu { constructor( t, { colors: e, columns: n, removeButtonLabel: i, documentColorsLabel: o, documentColorsCount: r, colorPickerLabel: s, colorPickerViewConfig: a, } ) { super(t); this.items = this.createCollection(); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusables = new Ad(); this._colorPickerViewConfig = a; this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.colorGridsFragmentView = new MD(t, { colors: e, columns: n, removeButtonLabel: i, documentColorsLabel: o, documentColorsCount: r, colorPickerLabel: s, focusTracker: this.focusTracker, focusables: this._focusables, }); this.colorPickerFragmentView = new ID(t, { focusables: this._focusables, focusTracker: this.focusTracker, keystrokes: this.keystrokes, colorPickerViewConfig: a, }); this.set("_isColorGridsFragmentVisible", true); this.set("_isColorPickerFragmentVisible", false); this.set("selectedColor", undefined); this.colorGridsFragmentView .bind("isVisible") .to(this, "_isColorGridsFragmentVisible"); this.colorPickerFragmentView .bind("isVisible") .to(this, "_isColorPickerFragmentVisible"); this.on("change:selectedColor", (t, e, n) => { this.colorGridsFragmentView.set("selectedColor", n); this.colorPickerFragmentView.set("selectedColor", n); }); this.colorGridsFragmentView.on("change:selectedColor", (t, e, n) => { this.set("selectedColor", n); }); this.colorPickerFragmentView.on("change:selectedColor", (t, e, n) => { this.set("selectedColor", n); }); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-color-selector"] }, children: this.items, }); } render() { super.render(); this.keystrokes.listenTo(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } appendUI() { this._appendColorGridsFragment(); if (this._colorPickerViewConfig) { this._appendColorPickerFragment(); } } showColorPickerFragment() { if ( !this.colorPickerFragmentView.colorPickerView || this._isColorPickerFragmentVisible ) { return; } this._isColorPickerFragmentVisible = true; this.colorPickerFragmentView.focus(); this.colorPickerFragmentView.resetValidationStatus(); this._isColorGridsFragmentVisible = false; } showColorGridsFragment() { if (this._isColorGridsFragmentVisible) { return; } this._isColorGridsFragmentVisible = true; this.colorGridsFragmentView.focus(); this._isColorPickerFragmentVisible = false; } focus() { this._focusCycler.focusFirst(); } focusLast() { this._focusCycler.focusLast(); } updateDocumentColors(t, e) { this.colorGridsFragmentView.updateDocumentColors(t, e); } updateSelectedColors() { this.colorGridsFragmentView.updateSelectedColors(); } _appendColorGridsFragment() { if (this.items.length) { return; } this.items.add(this.colorGridsFragmentView); this.colorGridsFragmentView.delegate("execute").to(this); this.colorGridsFragmentView.delegate("colorPicker:show").to(this); } _appendColorPickerFragment() { if (this.items.length === 2) { return; } this.items.add(this.colorPickerFragmentView); if (this.colorGridsFragmentView.colorPickerButtonView) { this.colorGridsFragmentView.colorPickerButtonView.on( "execute", () => { this.showColorPickerFragment(); } ); } this.colorGridsFragmentView.addColorPickerButton(); this.colorPickerFragmentView.delegate("execute").to(this); this.colorPickerFragmentView.delegate("colorPicker:cancel").to(this); } } class VD { constructor(t) { this._components = new Map(); this.editor = t; } *names() { for (const t of this._components.values()) { yield t.originalName; } } add(t, e) { this._components.set(OD(t), { callback: e, originalName: t }); } create(t) { if (!this.has(t)) { throw new N("componentfactory-item-missing", this, { name: t }); } return this._components.get(OD(t)).callback(this.editor.locale); } has(t) { return this._components.has(OD(t)); } } function OD(t) { return String(t).toLowerCase(); } var FD = n(8379); var jD = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; jD.insert = "head"; jD.singleton = true; var HD = Zd()(FD.A, jD); const UD = FD.A.locals || {}; class $D extends nu { constructor(t, e = {}) { super(t); const n = this.bindTemplate; this.set("label", e.label || ""); this.set("class", e.class || null); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-form__header", n.to("class")] }, children: this.children, }); if (e.icon) { this.iconView = new Zv(); this.iconView.content = e.icon; this.children.add(this.iconView); } const i = new nu(t); i.setTemplate({ tag: "h2", attributes: { class: ["ck", "ck-form__header__label"], role: "presentation", }, children: [{ text: n.to("label") }], }); this.children.add(i); } } function qD(t) { class n extends t { constructor(...t) { super(...t); this._onDragBound = this._onDrag.bind(this); this._onDragEndBound = this._onDragEnd.bind(this); this._lastDraggingCoordinates = { x: 0, y: 0 }; this.on("render", () => { this._attachListeners(); }); this.set("isDragging", false); } _attachListeners() { this.listenTo( this.element, "mousedown", this._onDragStart.bind(this) ); this.listenTo( this.element, "touchstart", this._onDragStart.bind(this) ); } _attachDragListeners() { this.listenTo(e.document, "mouseup", this._onDragEndBound); this.listenTo(e.document, "touchend", this._onDragEndBound); this.listenTo(e.document, "mousemove", this._onDragBound); this.listenTo(e.document, "touchmove", this._onDragBound); } _detachDragListeners() { this.stopListening(e.document, "mouseup", this._onDragEndBound); this.stopListening(e.document, "touchend", this._onDragEndBound); this.stopListening(e.document, "mousemove", this._onDragBound); this.stopListening(e.document, "touchmove", this._onDragBound); } _onDragStart(t, e) { if (!this._isHandleElementPressed(e)) { return; } this._attachDragListeners(); let n = 0; let i = 0; if (e instanceof MouseEvent) { n = e.clientX; i = e.clientY; } else { n = e.touches[0].clientX; i = e.touches[0].clientY; } this._lastDraggingCoordinates = { x: n, y: i }; this.isDragging = true; } _onDrag(t, e) { if (!this.isDragging) { this._detachDragListeners(); return; } let n = 0; let i = 0; if (e instanceof MouseEvent) { n = e.clientX; i = e.clientY; } else { n = e.touches[0].clientX; i = e.touches[0].clientY; } e.preventDefault(); this.fire("drag", { deltaX: Math.round(n - this._lastDraggingCoordinates.x), deltaY: Math.round(i - this._lastDraggingCoordinates.y), }); this._lastDraggingCoordinates = { x: n, y: i }; } _onDragEnd() { this._detachDragListeners(); this.isDragging = false; } _isHandleElementPressed(t) { if (!this.dragHandleElement) { return false; } return ( this.dragHandleElement === t.target || (t.target instanceof HTMLElement && this.dragHandleElement.contains(t.target)) ); } } return n; } var WD = n(7748); var GD = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; GD.insert = "head"; GD.singleton = true; var KD = Zd()(WD.A, GD); const YD = WD.A.locals || {}; class QD extends nu { constructor(t) { super(t); this.children = this.createCollection(); this.keystrokes = new rd(); this._focusTracker = new od(); this._focusables = new Ad(); this.focusCycler = new mx({ focusables: this._focusables, focusTracker: this._focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-dialog__actions"] }, children: this.children, }); } render() { super.render(); this.keystrokes.listenTo(this.element); } setButtons(t) { for (const e of t) { const t = new iy(this.locale); let n; t.on("execute", () => e.onExecute()); if (e.onCreate) { e.onCreate(t); } for (n in e) { if (n != "onExecute" && n != "onCreate") { t.set(n, e[n]); } } this.children.add(t); } this._updateFocusCyclableItems(); } focus(t) { if (t === -1) { this.focusCycler.focusLast(); } else { this.focusCycler.focusFirst(); } } _updateFocusCyclableItems() { Array.from(this.children).forEach((t) => { this._focusables.add(t); this._focusTracker.add(t.element); }); } } class ZD extends nu { constructor(t) { super(t); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-dialog__content"] }, children: this.children, }); } reset() { while (this.children.length) { this.children.remove(0); } } } var JD = n(7197); var XD = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; XD.insert = "head"; XD.singleton = true; var tS = Zd()(JD.A, XD); const eS = JD.A.locals || {}; const nS = { SCREEN_CENTER: "screen-center", EDITOR_CENTER: "editor-center", EDITOR_TOP_SIDE: "editor-top-side", EDITOR_TOP_CENTER: "editor-top-center", EDITOR_BOTTOM_CENTER: "editor-bottom-center", EDITOR_ABOVE_CENTER: "editor-above-center", EDITOR_BELOW_CENTER: "editor-below-center", }; const iS = wc("px"); class oS extends qD(nu) { constructor(t, { getCurrentDomRoot: e, getViewportOffset: n }) { super(t); this.wasMoved = false; const i = this.bindTemplate; const o = t.t; this.set("className", ""); this.set("ariaLabel", o("Editor dialog")); this.set("isModal", false); this.set("position", nS.SCREEN_CENTER); this.set("_isVisible", false); this.set("_isTransparent", false); this.set("_top", 0); this.set("_left", 0); this._getCurrentDomRoot = e; this._getViewportOffset = n; this.decorate("moveTo"); this.parts = this.createCollection(); this.keystrokes = new rd(); this.focusTracker = new od(); this._focusables = new Ad(); this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-dialog-overlay", i.if("isModal", "ck-dialog-overlay__transparent", (t) => !t), i.if("_isVisible", "ck-hidden", (t) => !t), ], tabindex: "-1", }, children: [ { tag: "div", attributes: { tabindex: "-1", class: ["ck", "ck-dialog", i.to("className")], role: "dialog", "aria-label": i.to("ariaLabel"), style: { top: i.to("_top", (t) => iS(t)), left: i.to("_left", (t) => iS(t)), visibility: i.if("_isTransparent", "hidden"), }, }, children: this.parts, }, ], }); } render() { super.render(); this.keystrokes.set("Esc", (t, e) => { this.fire("close", { source: "escKeyPress" }); e(); }); this.on("drag", (t, { deltaX: e, deltaY: n }) => { this.wasMoved = true; this.moveBy(e, n); }); this.listenTo(e.window, "resize", () => { if (this._isVisible && !this.wasMoved) { this.updatePosition(); } }); this.listenTo(e.document, "scroll", () => { if (this._isVisible && !this.wasMoved) { this.updatePosition(); } }); this.on("change:_isVisible", (t, e, n) => { if (n) { this._isTransparent = true; setTimeout(() => { this.updatePosition(); this._isTransparent = false; this.focus(); }, 10); } }); this.keystrokes.listenTo(this.element); } get dragHandleElement() { if (this.headerView) { return this.headerView.element; } else { return null; } } setupParts({ icon: t, title: e, hasCloseButton: n = true, content: i, actionButtons: o, }) { if (e) { this.headerView = new $D(this.locale, { icon: t }); if (n) { this.closeButtonView = this._createCloseButton(); this.headerView.children.add(this.closeButtonView); } this.headerView.label = e; this.ariaLabel = e; this.parts.add(this.headerView, 0); } if (i) { if (i instanceof nu) { i = [i]; } this.contentView = new ZD(this.locale); this.contentView.children.addMany(i); this.parts.add(this.contentView); } if (o) { this.actionsView = new QD(this.locale); this.actionsView.setButtons(o); this.parts.add(this.actionsView); } this._updateFocusCyclableItems(); } focus() { this._focusCycler.focusFirst(); } moveTo(t, e) { const n = this._getViewportRect(); const i = this._getDialogRect(); if (t + i.width > n.right) { t = n.right - i.width; } if (t < n.left) { t = n.left; } if (e < n.top) { e = n.top; } this._moveTo(t, e); } _moveTo(t, e) { this._left = t; this._top = e; } moveBy(t, e) { this.moveTo(this._left + t, this._top + e); } _moveOffScreen() { this._moveTo(-9999, -9999); } updatePosition() { if (!this.element || !this.element.parentNode) { return; } const t = this._getViewportRect(); let e = this.position; let n; if (!this._getCurrentDomRoot()) { e = nS.SCREEN_CENTER; } else { n = this._getVisibleDomRootRect(t); } const i = oS.defaultOffset; const o = this._getDialogRect(); switch (e) { case nS.EDITOR_TOP_SIDE: { if (n) { const t = this.locale.contentLanguageDirection === "ltr" ? n.right - o.width - i : n.left + i; this.moveTo(t, n.top + i); } else { this._moveOffScreen(); } break; } case nS.EDITOR_CENTER: { if (n) { this.moveTo( Math.round(n.left + n.width / 2 - o.width / 2), Math.round(n.top + n.height / 2 - o.height / 2) ); } else { this._moveOffScreen(); } break; } case nS.SCREEN_CENTER: { this.moveTo( Math.round((t.width - o.width) / 2), Math.round((t.height - o.height) / 2) ); break; } case nS.EDITOR_TOP_CENTER: { if (n) { this.moveTo( Math.round(n.left + n.width / 2 - o.width / 2), n.top + i ); } else { this._moveOffScreen(); } break; } case nS.EDITOR_BOTTOM_CENTER: { if (n) { this.moveTo( Math.round(n.left + n.width / 2 - o.width / 2), n.bottom - o.height - i ); } else { this._moveOffScreen(); } break; } case nS.EDITOR_ABOVE_CENTER: { if (n) { this.moveTo( Math.round(n.left + n.width / 2 - o.width / 2), n.top - o.height - i ); } else { this._moveOffScreen(); } break; } case nS.EDITOR_BELOW_CENTER: { if (n) { this.moveTo( Math.round(n.left + n.width / 2 - o.width / 2), n.bottom + i ); } else { this._moveOffScreen(); } break; } } } _getVisibleDomRootRect(t) { let e = new lc(this._getCurrentDomRoot()).getVisible(); if (!e) { return null; } else { e = t.getIntersection(e); if (!e) { return null; } } return e; } _getDialogRect() { return new lc(this.element.firstElementChild); } _getViewportRect() { return sS(this._getViewportOffset()); } _updateFocusCyclableItems() { const t = []; if (this.contentView) { for (const e of this.contentView.children) { if (fx(e)) { t.push(e); } } } if (this.actionsView) { t.push(this.actionsView); } if (this.closeButtonView) { t.push(this.closeButtonView); } t.forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); if (px(t)) { this.listenTo(t.focusCycler, "forwardCycle", (t) => { this._focusCycler.focusNext(); if ( this._focusCycler.next !== this._focusCycler.focusables.get(this._focusCycler.current) ) { t.stop(); } }); this.listenTo(t.focusCycler, "backwardCycle", (t) => { this._focusCycler.focusPrevious(); if ( this._focusCycler.previous !== this._focusCycler.focusables.get(this._focusCycler.current) ) { t.stop(); } }); } }); } _createCloseButton() { const t = new iy(this.locale); const e = this.locale.t; t.set({ label: e("Close"), tooltip: true, icon: Bv.cancel }); t.on("execute", () => this.fire("close", { source: "closeButton" })); return t; } } oS.defaultOffset = 15; const rS = oS; function sS(t) { t = Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, t); const n = new lc(e.window); n.top += t.top; n.height -= t.top; n.bottom -= t.bottom; n.height -= t.bottom; n.left += t.left; n.right -= t.right; n.width -= t.left + t.right; return n; } class aS extends au { static get pluginName() { return "Dialog"; } constructor(t) { super(t); const e = t.t; this._initShowHideListeners(); this._initFocusToggler(); this._initMultiRootIntegration(); this.set("id", null); t.accessibility.addKeystrokeInfos({ categoryId: "navigation", keystrokes: [ { label: e("Move focus in and out of an active dialog window"), keystroke: "Ctrl+F6", mayRequireFn: true, }, ], }); } _initShowHideListeners() { this.on("show", (t, e) => { this._show(e); }); this.on( "show", (t, e) => { if (e.onShow) { e.onShow(this); } }, { priority: "low" } ); this.on("hide", () => { if (aS._visibleDialogPlugin) { aS._visibleDialogPlugin._hide(); } }); this.on( "hide", () => { if (this._onHide) { this._onHide(this); this._onHide = undefined; } }, { priority: "low" } ); } _initFocusToggler() { const t = this.editor; t.keystrokes.set("Ctrl+F6", (e, n) => { if (!this.isOpen || this.view.isModal) { return; } if (this.view.focusTracker.isFocused) { t.editing.view.focus(); } else { this.view.focus(); } n(); }); } _initMultiRootIntegration() { const t = this.editor.model; t.document.on("change:data", () => { if (!this.view) { return; } const e = t.document.differ.getChangedRoots(); for (const t of e) { if (t.state) { this.view.updatePosition(); } } }); } show(t) { this.hide(); this.fire(`show:${t.id}`, t); } _show({ id: t, icon: e, title: n, hasCloseButton: i = true, content: o, actionButtons: r, className: s, isModal: a, position: c, onHide: l, }) { const d = this.editor; this.view = new rS(d.locale, { getCurrentDomRoot: () => d.editing.view.getDomRoot( d.model.document.selection.anchor.root.rootName ), getViewportOffset: () => d.ui.viewportOffset, }); const u = this.view; u.on("close", () => { this.hide(); }); d.ui.view.body.add(u); d.ui.focusTracker.add(u.element); d.keystrokes.listenTo(u.element); if (!c) { c = a ? nS.SCREEN_CENTER : nS.EDITOR_CENTER; } u.set({ position: c, _isVisible: true, className: s, isModal: a }); u.setupParts({ icon: e, title: n, hasCloseButton: i, content: o, actionButtons: r, }); this.id = t; if (l) { this._onHide = l; } this.isOpen = true; aS._visibleDialogPlugin = this; } hide() { if (aS._visibleDialogPlugin) { aS._visibleDialogPlugin.fire(`hide:${aS._visibleDialogPlugin.id}`); } } _hide() { if (!this.view) { return; } const t = this.editor; const e = this.view; if (e.contentView) { e.contentView.reset(); } t.ui.view.body.remove(e); t.ui.focusTracker.remove(e.element); t.keystrokes.stopListening(e.element); e.destroy(); t.editing.view.focus(); this.id = null; this.isOpen = false; aS._visibleDialogPlugin = null; } } var cS = n(9316); var lS = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; lS.insert = "head"; lS.singleton = true; var dS = Zd()(cS.A, lS); const uS = cS.A.locals || {}; const hS = wc("px"); const mS = e.document.body; const gS = { top: -99999, left: -99999, name: "arrowless", config: { withArrow: false }, }; class fS extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.set("top", 0); this.set("left", 0); this.set("position", "arrow_nw"); this.set("isVisible", false); this.set("withArrow", true); this.set("class", undefined); this._pinWhenIsVisibleCallback = null; this.content = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-balloon-panel", e.to("position", (t) => `ck-balloon-panel_${t}`), e.if("isVisible", "ck-balloon-panel_visible"), e.if("withArrow", "ck-balloon-panel_with-arrow"), e.to("class"), ], style: { top: e.to("top", hS), left: e.to("left", hS) }, }, children: this.content, }); } show() { this.isVisible = true; } hide() { this.isVisible = false; } attachTo(t) { this.show(); const e = fS.defaultPositions; const n = Object.assign( {}, { element: this.element, positions: [ e.southArrowNorth, e.southArrowNorthMiddleWest, e.southArrowNorthMiddleEast, e.southArrowNorthWest, e.southArrowNorthEast, e.northArrowSouth, e.northArrowSouthMiddleWest, e.northArrowSouthMiddleEast, e.northArrowSouthWest, e.northArrowSouthEast, e.viewportStickyNorth, ], limiter: mS, fitInViewport: true, }, t ); const i = fS._getOptimalPosition(n) || gS; const o = parseInt(i.left); const r = parseInt(i.top); const s = i.name; const a = i.config || {}; const { withArrow: c = true } = a; this.top = r; this.left = o; this.position = s; this.withArrow = c; } pin(t) { this.unpin(); this._pinWhenIsVisibleCallback = () => { if (this.isVisible) { this._startPinning(t); } else { this._stopPinning(); } }; this._startPinning(t); this.listenTo( this, "change:isVisible", this._pinWhenIsVisibleCallback ); } unpin() { if (this._pinWhenIsVisibleCallback) { this._stopPinning(); this.stopListening( this, "change:isVisible", this._pinWhenIsVisibleCallback ); this._pinWhenIsVisibleCallback = null; this.hide(); } } _startPinning(t) { this.attachTo(t); const n = kS(t.target); const i = t.limiter ? kS(t.limiter) : mS; this.listenTo( e.document, "scroll", (e, o) => { const r = o.target; const s = n && r.contains(n); const a = i && r.contains(i); if (s || a || !n || !i) { this.attachTo(t); } }, { useCapture: true } ); this.listenTo(e.window, "resize", () => { this.attachTo(t); }); } _stopPinning() { this.stopListening(e.document, "scroll"); this.stopListening(e.window, "resize"); } } fS.arrowSideOffset = 25; fS.arrowHeightOffset = 10; fS.stickyVerticalOffset = 20; fS._getOptimalPosition = xc; fS.defaultPositions = bS(); const pS = fS; function kS(t) { if ($a(t)) { return t; } if (sc(t)) { return t.commonAncestorContainer; } if (typeof t == "function") { return kS(t()); } return null; } function bS(t = {}) { const { sideOffset: e = fS.arrowSideOffset, heightOffset: n = fS.arrowHeightOffset, stickyVerticalOffset: i = fS.stickyVerticalOffset, config: o, } = t; return { northWestArrowSouthWest: (t, n) => ({ top: r(t, n), left: t.left - e, name: "arrow_sw", ...(o && { config: o }), }), northWestArrowSouthMiddleWest: (t, n) => ({ top: r(t, n), left: t.left - n.width * 0.25 - e, name: "arrow_smw", ...(o && { config: o }), }), northWestArrowSouth: (t, e) => ({ top: r(t, e), left: t.left - e.width / 2, name: "arrow_s", ...(o && { config: o }), }), northWestArrowSouthMiddleEast: (t, n) => ({ top: r(t, n), left: t.left - n.width * 0.75 + e, name: "arrow_sme", ...(o && { config: o }), }), northWestArrowSouthEast: (t, n) => ({ top: r(t, n), left: t.left - n.width + e, name: "arrow_se", ...(o && { config: o }), }), northArrowSouthWest: (t, n) => ({ top: r(t, n), left: t.left + t.width / 2 - e, name: "arrow_sw", ...(o && { config: o }), }), northArrowSouthMiddleWest: (t, n) => ({ top: r(t, n), left: t.left + t.width / 2 - n.width * 0.25 - e, name: "arrow_smw", ...(o && { config: o }), }), northArrowSouth: (t, e) => ({ top: r(t, e), left: t.left + t.width / 2 - e.width / 2, name: "arrow_s", ...(o && { config: o }), }), northArrowSouthMiddleEast: (t, n) => ({ top: r(t, n), left: t.left + t.width / 2 - n.width * 0.75 + e, name: "arrow_sme", ...(o && { config: o }), }), northArrowSouthEast: (t, n) => ({ top: r(t, n), left: t.left + t.width / 2 - n.width + e, name: "arrow_se", ...(o && { config: o }), }), northEastArrowSouthWest: (t, n) => ({ top: r(t, n), left: t.right - e, name: "arrow_sw", ...(o && { config: o }), }), northEastArrowSouthMiddleWest: (t, n) => ({ top: r(t, n), left: t.right - n.width * 0.25 - e, name: "arrow_smw", ...(o && { config: o }), }), northEastArrowSouth: (t, e) => ({ top: r(t, e), left: t.right - e.width / 2, name: "arrow_s", ...(o && { config: o }), }), northEastArrowSouthMiddleEast: (t, n) => ({ top: r(t, n), left: t.right - n.width * 0.75 + e, name: "arrow_sme", ...(o && { config: o }), }), northEastArrowSouthEast: (t, n) => ({ top: r(t, n), left: t.right - n.width + e, name: "arrow_se", ...(o && { config: o }), }), southWestArrowNorthWest: (t) => ({ top: s(t), left: t.left - e, name: "arrow_nw", ...(o && { config: o }), }), southWestArrowNorthMiddleWest: (t, n) => ({ top: s(t), left: t.left - n.width * 0.25 - e, name: "arrow_nmw", ...(o && { config: o }), }), southWestArrowNorth: (t, e) => ({ top: s(t), left: t.left - e.width / 2, name: "arrow_n", ...(o && { config: o }), }), southWestArrowNorthMiddleEast: (t, n) => ({ top: s(t), left: t.left - n.width * 0.75 + e, name: "arrow_nme", ...(o && { config: o }), }), southWestArrowNorthEast: (t, n) => ({ top: s(t), left: t.left - n.width + e, name: "arrow_ne", ...(o && { config: o }), }), southArrowNorthWest: (t) => ({ top: s(t), left: t.left + t.width / 2 - e, name: "arrow_nw", ...(o && { config: o }), }), southArrowNorthMiddleWest: (t, n) => ({ top: s(t), left: t.left + t.width / 2 - n.width * 0.25 - e, name: "arrow_nmw", ...(o && { config: o }), }), southArrowNorth: (t, e) => ({ top: s(t), left: t.left + t.width / 2 - e.width / 2, name: "arrow_n", ...(o && { config: o }), }), southArrowNorthMiddleEast: (t, n) => ({ top: s(t), left: t.left + t.width / 2 - n.width * 0.75 + e, name: "arrow_nme", ...(o && { config: o }), }), southArrowNorthEast: (t, n) => ({ top: s(t), left: t.left + t.width / 2 - n.width + e, name: "arrow_ne", ...(o && { config: o }), }), southEastArrowNorthWest: (t) => ({ top: s(t), left: t.right - e, name: "arrow_nw", ...(o && { config: o }), }), southEastArrowNorthMiddleWest: (t, n) => ({ top: s(t), left: t.right - n.width * 0.25 - e, name: "arrow_nmw", ...(o && { config: o }), }), southEastArrowNorth: (t, e) => ({ top: s(t), left: t.right - e.width / 2, name: "arrow_n", ...(o && { config: o }), }), southEastArrowNorthMiddleEast: (t, n) => ({ top: s(t), left: t.right - n.width * 0.75 + e, name: "arrow_nme", ...(o && { config: o }), }), southEastArrowNorthEast: (t, n) => ({ top: s(t), left: t.right - n.width + e, name: "arrow_ne", ...(o && { config: o }), }), westArrowEast: (t, e) => ({ top: t.top + t.height / 2 - e.height / 2, left: t.left - e.width - n, name: "arrow_e", ...(o && { config: o }), }), eastArrowWest: (t, e) => ({ top: t.top + t.height / 2 - e.height / 2, left: t.right + n, name: "arrow_w", ...(o && { config: o }), }), viewportStickyNorth: (t, e, n, r) => { const s = r || n; if (!t.getIntersection(s)) { return null; } if (s.height - t.height > i) { return null; } return { top: s.top + i, left: t.left + t.width / 2 - e.width / 2, name: "arrowless", config: { withArrow: false, ...o }, }; }, }; function r(t, e) { return t.top - e.height - n; } function s(t) { return t.bottom + n; } } var wS = n(3935); var AS = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; AS.insert = "head"; AS.singleton = true; var _S = Zd()(wS.A, AS); const CS = wS.A.locals || {}; const vS = "ck-tooltip"; class yS extends Za() { constructor(t) { super(); this._currentElementWithTooltip = null; this._currentTooltipPosition = null; this._resizeObserver = null; this._mutationObserver = null; yS._editors.add(t); if (yS._instance) { return yS._instance; } yS._instance = this; this.tooltipTextView = new nu(t.locale); this.tooltipTextView.set("text", ""); this.tooltipTextView.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-tooltip__text"] }, children: [{ text: this.tooltipTextView.bindTemplate.to("text") }], }); this.balloonPanelView = new pS(t.locale); this.balloonPanelView.class = vS; this.balloonPanelView.content.add(this.tooltipTextView); this._mutationObserver = SS(() => { this._updateTooltipPosition(); }); this._pinTooltipDebounced = Zg(this._pinTooltip, 600); this._unpinTooltipDebounced = Zg(this._unpinTooltip, 400); this.listenTo(e.document, "keydown", this._onKeyDown.bind(this), { useCapture: true, }); this.listenTo( e.document, "mouseenter", this._onEnterOrFocus.bind(this), { useCapture: true } ); this.listenTo( e.document, "mouseleave", this._onLeaveOrBlur.bind(this), { useCapture: true } ); this.listenTo(e.document, "focus", this._onEnterOrFocus.bind(this), { useCapture: true, }); this.listenTo(e.document, "blur", this._onLeaveOrBlur.bind(this), { useCapture: true, }); this.listenTo(e.document, "scroll", this._onScroll.bind(this), { useCapture: true, }); this._watchdogExcluded = true; } destroy(t) { const e = t.ui.view && t.ui.view.body; yS._editors.delete(t); this.stopListening(t.ui); if (e && e.has(this.balloonPanelView)) { e.remove(this.balloonPanelView); } if (!yS._editors.size) { this._unpinTooltip(); this.balloonPanelView.destroy(); this.stopListening(); yS._instance = null; } } static getPositioningFunctions(t) { const e = yS.defaultBalloonPositions; return { s: [ e.southArrowNorth, e.southArrowNorthEast, e.southArrowNorthWest, ], n: [e.northArrowSouth], e: [e.eastArrowWest], w: [e.westArrowEast], sw: [e.southArrowNorthEast], se: [e.southArrowNorthWest], }[t]; } _onKeyDown(t, e) { if (e.key === "Escape" && this._currentElementWithTooltip) { this._unpinTooltip(); e.stopPropagation(); } } _onEnterOrFocus(t, { target: e }) { const n = ES(e); if (!n) { if (t.name === "focus") { this._unpinTooltip(); } return; } if (n === this._currentElementWithTooltip) { return; } this._unpinTooltip(); this._pinTooltipDebounced(n, DS(n)); } _onLeaveOrBlur(t, { target: e, relatedTarget: n }) { if (t.name === "mouseleave") { if (!$a(e)) { return; } const t = this.balloonPanelView.element; const i = t && (t === n || t.contains(n)); const o = !i && e === t; if (i) { this._unpinTooltipDebounced.cancel(); return; } if ( !o && this._currentElementWithTooltip && e !== this._currentElementWithTooltip ) { return; } const r = ES(e); const s = ES(n); if (o || (r && r !== s)) { this._unpinTooltipDebounced(); } } else { if ( this._currentElementWithTooltip && e !== this._currentElementWithTooltip ) { return; } this._unpinTooltipDebounced(); } } _onScroll(t, { target: e }) { if (!this._currentElementWithTooltip) { return; } if ( e.contains(this.balloonPanelView.element) && e.contains(this._currentElementWithTooltip) ) { return; } this._unpinTooltip(); } _pinTooltip(t, { text: e, position: n, cssClass: i }) { this._unpinTooltip(); const o = id(yS._editors.values()).ui.view.body; if (!o.has(this.balloonPanelView)) { o.add(this.balloonPanelView); } this.tooltipTextView.text = e; this.balloonPanelView.pin({ target: t, positions: yS.getPositioningFunctions(n), }); this._resizeObserver = new kc(t, () => { if (!yc(t)) { this._unpinTooltip(); } }); this._mutationObserver.attach(t); this.balloonPanelView.class = [vS, i].filter((t) => t).join(" "); for (const t of yS._editors) { this.listenTo( t.ui, "update", this._updateTooltipPosition.bind(this), { priority: "low" } ); } this._currentElementWithTooltip = t; this._currentTooltipPosition = n; } _unpinTooltip() { this._unpinTooltipDebounced.cancel(); this._pinTooltipDebounced.cancel(); this.balloonPanelView.unpin(); for (const t of yS._editors) { this.stopListening(t.ui, "update"); } this._currentElementWithTooltip = null; this._currentTooltipPosition = null; this.tooltipTextView.text = ""; if (this._resizeObserver) { this._resizeObserver.destroy(); } this._mutationObserver.detach(); } _updateTooltipPosition() { if (!this._currentElementWithTooltip) { return; } const t = DS(this._currentElementWithTooltip); if (!yc(this._currentElementWithTooltip) || !t.text) { this._unpinTooltip(); return; } this.balloonPanelView.pin({ target: this._currentElementWithTooltip, positions: yS.getPositioningFunctions(t.position), }); } } yS.defaultBalloonPositions = bS({ heightOffset: 5, sideOffset: 13 }); yS._editors = new Set(); yS._instance = null; const xS = yS; function ES(t) { if (!$a(t)) { return null; } return t.closest( "[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])" ); } function DS(t) { return { text: t.dataset.ckeTooltipText, position: t.dataset.ckeTooltipPosition || "s", cssClass: t.dataset.ckeTooltipClass || "", }; } function SS(t) { const e = new MutationObserver(() => { t(); }); return { attach(t) { e.observe(t, { attributes: true, attributeFilter: [ "data-cke-tooltip-text", "data-cke-tooltip-position", ], }); }, detach() { e.disconnect(); }, }; } var TS = "Expected a function"; function BS(t, e, n) { var i = true, o = true; if (typeof t != "function") { throw new TypeError(TS); } if (st(n)) { i = "leading" in n ? !!n.leading : i; o = "trailing" in n ? !!n.trailing : o; } return Zg(t, e, { leading: i, maxWait: e, trailing: o }); } const MS = BS; const IS = '\n'; const LS = 53; const NS = 10; const zS = 50; const PS = 350; const RS = "Powered by"; class VS extends Za() { constructor(t) { super(); this.editor = t; this._balloonView = null; this._lastFocusedEditableElement = null; this._showBalloonThrottled = MS(this._showBalloon.bind(this), 50, { leading: true, }); t.on("ready", this._handleEditorReady.bind(this)); } destroy() { const t = this._balloonView; if (t) { t.unpin(); this._balloonView = null; } this._showBalloonThrottled.cancel(); this.stopListening(); } _handleEditorReady() { const t = this.editor; const e = !!t.config.get("ui.poweredBy.forceVisible"); if (!e && ud(t.config.get("licenseKey")) === "VALID") { return; } if (!t.ui.view) { return; } t.ui.focusTracker.on("change:isFocused", (t, e, n) => { this._updateLastFocusedEditableElement(); if (n) { this._showBalloon(); } else { this._hideBalloon(); } }); t.ui.focusTracker.on("change:focusedElement", (t, e, n) => { this._updateLastFocusedEditableElement(); if (n) { this._showBalloon(); } }); t.ui.on("update", () => { this._showBalloonThrottled(); }); } _createBalloonView() { const t = this.editor; const e = (this._balloonView = new pS()); const n = $S(t); const i = new OS(t.locale, n.label); e.content.add(i); e.set({ class: "ck-powered-by-balloon" }); t.ui.view.body.add(e); t.ui.focusTracker.add(e.element); this._balloonView = e; } _showBalloon() { if (!this._lastFocusedEditableElement) { return; } const t = FS(this.editor, this._lastFocusedEditableElement); if (t) { if (!this._balloonView) { this._createBalloonView(); } this._balloonView.pin(t); } } _hideBalloon() { if (this._balloonView) { this._balloonView.unpin(); } } _updateLastFocusedEditableElement() { const t = this.editor; const e = t.ui.focusTracker.isFocused; const n = t.ui.focusTracker.focusedElement; if (!e || !n) { this._lastFocusedEditableElement = null; return; } const i = Array.from(t.ui.getEditableElementsNames()).map((e) => t.ui.getEditableElement(e) ); if (i.includes(n)) { this._lastFocusedEditableElement = n; } else { this._lastFocusedEditableElement = i[0]; } } } class OS extends nu { constructor(t, e) { super(t); const n = new Zv(); const i = this.bindTemplate; n.set({ content: IS, isColorInherited: false }); n.extendTemplate({ attributes: { style: { width: LS + "px", height: NS + "px" } }, }); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-powered-by"], "aria-hidden": true }, children: [ { tag: "a", attributes: { href: "https://ckeditor.com/?utm_source=ckeditor&" + "utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo", target: "_blank", tabindex: "-1", }, children: [ ...(e ? [ { tag: "span", attributes: { class: ["ck", "ck-powered-by__label"] }, children: [e], }, ] : []), n, ], on: { dragstart: i.to((t) => t.preventDefault()) }, }, ], }); } } function FS(t, e) { const n = $S(t); const i = n.side === "right" ? jS(e, n) : HS(e, n); return { target: e, positions: [i] }; } function jS(t, e) { return US( t, e, (t, n) => t.left + t.width - n.width - e.horizontalOffset ); } function HS(t, e) { return US(t, e, (t) => t.left + e.horizontalOffset); } function US(t, e, n) { return (i, o) => { const r = new lc(t); if (r.width < PS || r.height < zS) { return null; } let s; if (e.position === "inside") { s = r.bottom - o.height; } else { s = r.bottom - o.height / 2; } s -= e.verticalOffset; const a = n(r, o); const c = i .clone() .moveTo(a, s) .getIntersection(o.clone().moveTo(a, s)); const l = c.getVisible(); if (!l || l.getArea() < o.getArea()) { return null; } return { top: s, left: a, name: `position_${e.position}-side_${e.side}`, config: { withArrow: false }, }; }; } function $S(t) { const e = t.config.get("ui.poweredBy"); const n = (e && e.position) || "border"; return { position: n, label: RS, verticalOffset: n === "inside" ? 5 : 0, horizontalOffset: 5, side: t.locale.contentLanguageDirection === "ltr" ? "right" : "left", ...e, }; } var qS = n(1587); var WS = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; WS.insert = "head"; WS.singleton = true; var GS = Zd()(qS.A, WS); const KS = qS.A.locals || {}; const YS = { POLITE: "polite", ASSERTIVE: "assertive" }; class QS { constructor(t) { this.editor = t; t.once("ready", () => { for (const t of Object.values(YS)) { this.announce("", t); } }); } announce(t, e = YS.POLITE) { const n = this.editor; if (!n.ui.view) { return; } if (!this.view) { this.view = new ZS(n.locale); n.ui.view.body.add(this.view); } const { politeness: i, isUnsafeHTML: o } = typeof e === "string" ? { politeness: e } : e; let r = this.view.regionViews.find((t) => t.politeness === i); if (!r) { r = new JS(n, i); this.view.regionViews.add(r); } r.announce({ announcement: t, isUnsafeHTML: o }); } } class ZS extends nu { constructor(t) { super(t); this.regionViews = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-aria-live-announcer"] }, children: this.regionViews, }); } } class JS extends nu { constructor(t, e) { super(t.locale); this.setTemplate({ tag: "div", attributes: { role: "region", "aria-live": e, "aria-relevant": "additions", }, children: [ { tag: "ul", attributes: { class: ["ck", "ck-aria-live-region-list"] }, }, ], }); t.on("destroy", () => { if (this._pruneAnnouncementsInterval !== null) { clearInterval(this._pruneAnnouncementsInterval); this._pruneAnnouncementsInterval = null; } }); this.politeness = e; this._domConverter = t.data.htmlProcessor.domConverter; this._pruneAnnouncementsInterval = setInterval(() => { if (this.element && this._listElement.firstChild) { this._listElement.firstChild.remove(); } }, 5e3); } announce({ announcement: t, isUnsafeHTML: e }) { if (!t.trim().length) { return; } const n = document.createElement("li"); if (e) { this._domConverter.setContentOf(n, t); } else { n.innerText = t; } this._listElement.appendChild(n); } get _listElement() { return this.element.querySelector("ul"); } } class XS extends mt() { constructor(t) { super(); this.isReady = false; this._editableElementsMap = new Map(); this._focusableToolbarDefinitions = []; const e = t.editing.view; this.editor = t; this.componentFactory = new VD(t); this.focusTracker = new od(); this.tooltipManager = new xS(t); this.poweredBy = new VS(t); this.ariaLiveAnnouncer = new QS(t); this.set("viewportOffset", this._readViewportOffsetFromConfig()); this.once("ready", () => { this.isReady = true; }); this.listenTo(e.document, "layoutChanged", this.update.bind(this)); this.listenTo( e, "scrollToTheSelection", this._handleScrollToTheSelection.bind(this) ); this._initFocusTracking(); } get element() { return null; } update() { this.fire("update"); } destroy() { this.stopListening(); this.focusTracker.destroy(); this.tooltipManager.destroy(this.editor); this.poweredBy.destroy(); for (const t of this._editableElementsMap.values()) { t.ckeditorInstance = null; this.editor.keystrokes.stopListening(t); } this._editableElementsMap = new Map(); this._focusableToolbarDefinitions = []; } setEditableElement(t, e) { this._editableElementsMap.set(t, e); if (!e.ckeditorInstance) { e.ckeditorInstance = this.editor; } this.focusTracker.add(e); const n = () => { if (this.editor.editing.view.getDomRoot(t)) { return; } this.editor.keystrokes.listenTo(e); }; if (this.isReady) { n(); } else { this.once("ready", n); } } removeEditableElement(t) { const e = this._editableElementsMap.get(t); if (!e) { return; } this._editableElementsMap.delete(t); this.editor.keystrokes.stopListening(e); this.focusTracker.remove(e); e.ckeditorInstance = null; } getEditableElement(t = "main") { return this._editableElementsMap.get(t); } getEditableElementsNames() { return this._editableElementsMap.keys(); } addToolbar(t, e = {}) { if (t.isRendered) { this.focusTracker.add(t.element); this.editor.keystrokes.listenTo(t.element); } else { t.once("render", () => { this.focusTracker.add(t.element); this.editor.keystrokes.listenTo(t.element); }); } this._focusableToolbarDefinitions.push({ toolbarView: t, options: e, }); } get _editableElements() { console.warn( "editor-ui-deprecated-editable-elements: " + "The EditorUI#_editableElements property has been deprecated and will be removed in the near future.", { editorUI: this } ); return this._editableElementsMap; } _readViewportOffsetFromConfig() { const t = this.editor; const e = t.config.get("ui.viewportOffset"); if (e) { return e; } const n = t.config.get("toolbar.viewportTopOffset"); if (n) { console.warn( "editor-ui-deprecated-viewport-offset-config: " + "The `toolbar.vieportTopOffset` configuration option is deprecated. " + "It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead." ); return { top: n }; } return { top: 0 }; } _initFocusTracking() { const t = this.editor; const e = t.editing.view; let n; let i; t.keystrokes.set("Alt+F10", (t, o) => { const r = this.focusTracker.focusedElement; if ( Array.from(this._editableElementsMap.values()).includes(r) && !Array.from(e.domRoots.values()).includes(r) ) { n = r; } const s = this._getCurrentFocusedToolbarDefinition(); if (!s || !i) { i = this._getFocusableCandidateToolbarDefinitions(); } for (let t = 0; t < i.length; t++) { const t = i.shift(); i.push(t); if (t !== s && this._focusFocusableCandidateToolbar(t)) { if (s && s.options.afterBlur) { s.options.afterBlur(); } break; } } o(); }); t.keystrokes.set("Esc", (e, i) => { const o = this._getCurrentFocusedToolbarDefinition(); if (!o) { return; } if (n) { n.focus(); n = null; } else { t.editing.view.focus(); } if (o.options.afterBlur) { o.options.afterBlur(); } i(); }); } _getFocusableCandidateToolbarDefinitions() { const t = []; for (const e of this._focusableToolbarDefinitions) { const { toolbarView: n, options: i } = e; if (yc(n.element) || i.beforeFocus) { t.push(e); } } t.sort((t, e) => tT(t) - tT(e)); return t; } _getCurrentFocusedToolbarDefinition() { for (const t of this._focusableToolbarDefinitions) { if ( t.toolbarView.element && t.toolbarView.element.contains(this.focusTracker.focusedElement) ) { return t; } } return null; } _focusFocusableCandidateToolbar(t) { const { toolbarView: e, options: { beforeFocus: n }, } = t; if (n) { n(); } if (!yc(e.element)) { return false; } e.focus(); return true; } _handleScrollToTheSelection(t, e) { const n = { top: 0, bottom: 0, left: 0, right: 0, ...this.viewportOffset, }; e.viewportOffset.top += n.top; e.viewportOffset.bottom += n.bottom; e.viewportOffset.left += n.left; e.viewportOffset.right += n.right; } } function tT(t) { const { toolbarView: e, options: n } = t; let i = 10; if (yc(e.element)) { i--; } if (n.isContextual) { i--; } return i; } var eT = n(5931); var nT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; nT.insert = "head"; nT.singleton = true; var iT = Zd()(eT.A, nT); const oT = eT.A.locals || {}; class rT extends nu { constructor(t) { super(t); this.body = new qv(t); } render() { super.render(); this.body.attachToDom(); } destroy() { this.body.detachFromDom(); return super.destroy(); } } class sT extends rT { constructor(t) { super(t); this.top = this.createCollection(); this.main = this.createCollection(); this._voiceLabelView = this._createVoiceLabel(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-reset", "ck-editor", "ck-rounded-corners"], role: "application", dir: t.uiLanguageDirection, lang: t.uiLanguage, "aria-labelledby": this._voiceLabelView.id, }, children: [ this._voiceLabelView, { tag: "div", attributes: { class: ["ck", "ck-editor__top", "ck-reset_all"], role: "presentation", }, children: this.top, }, { tag: "div", attributes: { class: ["ck", "ck-editor__main"], role: "presentation", }, children: this.main, }, ], }); } _createVoiceLabel() { const t = this.t; const e = new zv(); e.text = t("Rich Text Editor"); e.extendTemplate({ attributes: { class: "ck-voice-label" } }); return e; } } class aT extends nu { constructor(t, e, n) { super(t); this.name = null; this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-content", "ck-editor__editable", "ck-rounded-corners", ], lang: t.contentLanguage, dir: t.contentLanguageDirection, }, }); this.set("isFocused", false); this._editableElement = n; this._hasExternalElement = !!this._editableElement; this._editingView = e; } render() { super.render(); if (this._hasExternalElement) { this.template.apply((this.element = this._editableElement)); } else { this._editableElement = this.element; } this.on("change:isFocused", () => this._updateIsFocusedClasses()); this._updateIsFocusedClasses(); } destroy() { if (this._hasExternalElement) { this.template.revert(this._editableElement); } super.destroy(); } get hasExternalElement() { return this._hasExternalElement; } _updateIsFocusedClasses() { const t = this._editingView; if (t.isRenderingInProgress) { n(this); } else { e(this); } function e(e) { t.change((n) => { const i = t.document.getRoot(e.name); n.addClass(e.isFocused ? "ck-focused" : "ck-blurred", i); n.removeClass(e.isFocused ? "ck-blurred" : "ck-focused", i); }); } function n(i) { t.once("change:isRenderingInProgress", (t, o, r) => { if (!r) { e(i); } else { n(i); } }); } } } class cT extends aT { constructor(t, e, n, i = {}) { super(t, e, n); const o = t.t; this.extendTemplate({ attributes: { role: "textbox", class: "ck-editor__editable_inline", }, }); this._generateLabel = i.label || (() => o("Editor editing area: %0", this.name)); } render() { super.render(); const t = this._editingView; t.change((e) => { const n = t.document.getRoot(this.name); e.setAttribute("aria-label", this._generateLabel(this), n); }); } } class lT extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.setTemplate({ tag: "iframe", attributes: { class: ["ck", "ck-reset_all"], sandbox: "allow-same-origin allow-scripts", }, on: { load: e.to("loaded") }, }); } render() { return new Promise((t) => { this.on("loaded", t); return super.render(); }); } } class dT extends gu { static get pluginName() { return "Notification"; } init() { this.on( "show:warning", (t, e) => { window.alert(e.message); }, { priority: "lowest" } ); } showSuccess(t, e = {}) { this._showNotification({ message: t, type: "success", namespace: e.namespace, title: e.title, }); } showInfo(t, e = {}) { this._showNotification({ message: t, type: "info", namespace: e.namespace, title: e.title, }); } showWarning(t, e = {}) { this._showNotification({ message: t, type: "warning", namespace: e.namespace, title: e.title, }); } _showNotification(t) { const e = t.namespace ? `show:${t.type}:${t.namespace}` : `show:${t.type}`; this.fire(e, { message: t.message, type: t.type, title: t.title || "", }); } } class uT extends mt() { constructor(t, e) { super(); if (e) { Sg(this, e); } if (t) { this.set(t); } } } var hT = n(6841); var mT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; mT.insert = "head"; mT.singleton = true; var gT = Zd()(hT.A, mT); const fT = hT.A.locals || {}; var pT = n(726); var kT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; kT.insert = "head"; kT.singleton = true; var bT = Zd()(pT.A, kT); const wT = pT.A.locals || {}; const AT = wc("px"); class _T extends au { static get pluginName() { return "ContextualBalloon"; } constructor(t) { super(t); this._viewToStack = new Map(); this._idToStack = new Map(); this._view = null; this._rotatorView = null; this._fakePanelsView = null; this.positionLimiter = () => { const t = this.editor.editing.view; const e = t.document; const n = e.selection.editableElement; if (n) { return t.domConverter.mapViewToDom(n.root); } return null; }; this.set("visibleView", null); this.set("_numberOfStacks", 0); this.set("_singleViewMode", false); } destroy() { super.destroy(); if (this._view) { this._view.destroy(); } if (this._rotatorView) { this._rotatorView.destroy(); } if (this._fakePanelsView) { this._fakePanelsView.destroy(); } } get view() { if (!this._view) { this._createPanelView(); } return this._view; } hasView(t) { return Array.from(this._viewToStack.keys()).includes(t); } add(t) { if (!this._view) { this._createPanelView(); } if (this.hasView(t.view)) { throw new N("contextualballoon-add-view-exist", [this, t]); } const e = t.stackId || "main"; if (!this._idToStack.has(e)) { this._idToStack.set(e, new Map([[t.view, t]])); this._viewToStack.set(t.view, this._idToStack.get(e)); this._numberOfStacks = this._idToStack.size; if (!this._visibleStack || t.singleViewMode) { this.showStack(e); } return; } const n = this._idToStack.get(e); if (t.singleViewMode) { this.showStack(e); } n.set(t.view, t); this._viewToStack.set(t.view, n); if (n === this._visibleStack) { this._showView(t); } } remove(t) { if (!this.hasView(t)) { throw new N("contextualballoon-remove-view-not-exist", [this, t]); } const e = this._viewToStack.get(t); if (this._singleViewMode && this.visibleView === t) { this._singleViewMode = false; } if (this.visibleView === t) { if (e.size === 1) { if (this._idToStack.size > 1) { this._showNextStack(); } else { this.view.hide(); this.visibleView = null; this._rotatorView.hideView(); } } else { this._showView(Array.from(e.values())[e.size - 2]); } } if (e.size === 1) { this._idToStack.delete(this._getStackId(e)); this._numberOfStacks = this._idToStack.size; } else { e.delete(t); } this._viewToStack.delete(t); } updatePosition(t) { if (t) { this._visibleStack.get(this.visibleView).position = t; } this.view.pin(this._getBalloonPosition()); this._fakePanelsView.updatePosition(); } showStack(t) { this.visibleStack = t; const e = this._idToStack.get(t); if (!e) { throw new N("contextualballoon-showstack-stack-not-exist", this); } if (this._visibleStack === e) { return; } this._showView(Array.from(e.values()).pop()); } _createPanelView() { this._view = new pS(this.editor.locale); this.editor.ui.view.body.add(this._view); this.editor.ui.focusTracker.add(this._view.element); this._rotatorView = this._createRotatorView(); this._fakePanelsView = this._createFakePanelsView(); } get _visibleStack() { return this._viewToStack.get(this.visibleView); } _getStackId(t) { const e = Array.from(this._idToStack.entries()).find( (e) => e[1] === t ); return e[0]; } _showNextStack() { const t = Array.from(this._idToStack.values()); let e = t.indexOf(this._visibleStack) + 1; if (!t[e]) { e = 0; } this.showStack(this._getStackId(t[e])); } _showPrevStack() { const t = Array.from(this._idToStack.values()); let e = t.indexOf(this._visibleStack) - 1; if (!t[e]) { e = t.length - 1; } this.showStack(this._getStackId(t[e])); } _createRotatorView() { const t = new CT(this.editor.locale); const e = this.editor.locale.t; this.view.content.add(t); t.bind("isNavigationVisible").to( this, "_numberOfStacks", this, "_singleViewMode", (t, e) => !e && t > 1 ); t.on("change:isNavigationVisible", () => this.updatePosition(), { priority: "low", }); t.bind("counter").to( this, "visibleView", this, "_numberOfStacks", (t, n) => { if (n < 2) { return ""; } const i = Array.from(this._idToStack.values()).indexOf( this._visibleStack ) + 1; return e("%0 of %1", [i, n]); } ); t.buttonNextView.on("execute", () => { if (t.focusTracker.isFocused) { this.editor.editing.view.focus(); } this._showNextStack(); }); t.buttonPrevView.on("execute", () => { if (t.focusTracker.isFocused) { this.editor.editing.view.focus(); } this._showPrevStack(); }); return t; } _createFakePanelsView() { const t = new vT(this.editor.locale, this.view); t.bind("numberOfPanels").to( this, "_numberOfStacks", this, "_singleViewMode", (t, e) => { const n = !e && t >= 2; return n ? Math.min(t - 1, 2) : 0; } ); t.listenTo(this.view, "change:top", () => t.updatePosition()); t.listenTo(this.view, "change:left", () => t.updatePosition()); this.editor.ui.view.body.add(t); return t; } _showView({ view: t, balloonClassName: e = "", withArrow: n = true, singleViewMode: i = false, }) { this.view.class = e; this.view.withArrow = n; this._rotatorView.showView(t); this.visibleView = t; this.view.pin(this._getBalloonPosition()); this._fakePanelsView.updatePosition(); if (i) { this._singleViewMode = true; } } _getBalloonPosition() { let t = Array.from(this._visibleStack.values()).pop().position; if (t) { if (!t.limiter) { t = Object.assign({}, t, { limiter: this.positionLimiter }); } t = Object.assign({}, t, { viewportOffsetConfig: this.editor.ui.viewportOffset, }); } return t; } } class CT extends nu { constructor(t) { super(t); const e = t.t; const n = this.bindTemplate; this.set("isNavigationVisible", true); this.focusTracker = new od(); this.buttonPrevView = this._createButtonView( e("Previous"), Bv.previousArrow ); this.buttonNextView = this._createButtonView(e("Next"), Bv.nextArrow); this.content = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-balloon-rotator"], "z-index": "-1", }, children: [ { tag: "div", attributes: { class: [ "ck-balloon-rotator__navigation", n.to("isNavigationVisible", (t) => (t ? "" : "ck-hidden")), ], }, children: [ this.buttonPrevView, { tag: "span", attributes: { class: ["ck-balloon-rotator__counter"] }, children: [{ text: n.to("counter") }], }, this.buttonNextView, ], }, { tag: "div", attributes: { class: "ck-balloon-rotator__content" }, children: this.content, }, ], }); } render() { super.render(); this.focusTracker.add(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); } showView(t) { this.hideView(); this.content.add(t); } hideView() { this.content.clear(); } _createButtonView(t, e) { const n = new iy(this.locale); n.set({ label: t, icon: e, tooltip: true }); return n; } } class vT extends nu { constructor(t, e) { super(t); const n = this.bindTemplate; this.set("top", 0); this.set("left", 0); this.set("height", 0); this.set("width", 0); this.set("numberOfPanels", 0); this.content = this.createCollection(); this._balloonPanelView = e; this.setTemplate({ tag: "div", attributes: { class: [ "ck-fake-panel", n.to("numberOfPanels", (t) => (t ? "" : "ck-hidden")), ], style: { top: n.to("top", AT), left: n.to("left", AT), width: n.to("width", AT), height: n.to("height", AT), }, }, children: this.content, }); this.on("change:numberOfPanels", (t, e, n, i) => { if (n > i) { this._addPanels(n - i); } else { this._removePanels(i - n); } this.updatePosition(); }); } _addPanels(t) { while (t--) { const t = new nu(); t.setTemplate({ tag: "div" }); this.content.add(t); this.registerChild(t); } } _removePanels(t) { while (t--) { const t = this.content.last; this.content.remove(t); this.deregisterChild(t); t.destroy(); } } updatePosition() { if (this.numberOfPanels) { const { top: t, left: e } = this._balloonPanelView; const { width: n, height: i } = new lc( this._balloonPanelView.element ); Object.assign(this, { top: t, left: e, width: n, height: i }); } } } var yT = n(8016); var xT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; xT.insert = "head"; xT.singleton = true; var ET = Zd()(yT.A, xT); const DT = yT.A.locals || {}; const ST = wc("px"); class TT extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.set("isActive", false); this.set("isSticky", false); this.set("limiterElement", null); this.set("limiterBottomOffset", 50); this.set("viewportTopOffset", 0); this.set("_marginLeft", null); this.set("_isStickyToTheBottomOfLimiter", false); this.set("_stickyTopOffset", null); this.set("_stickyBottomOffset", null); this.content = this.createCollection(); this._contentPanelPlaceholder = new vd({ tag: "div", attributes: { class: ["ck", "ck-sticky-panel__placeholder"], style: { display: e.to("isSticky", (t) => (t ? "block" : "none")), height: e.to("isSticky", (t) => t ? ST(this._contentPanelRect.height) : null ), }, }, }).render(); this.contentPanelElement = new vd({ tag: "div", attributes: { class: [ "ck", "ck-sticky-panel__content", e.if("isSticky", "ck-sticky-panel__content_sticky"), e.if( "_isStickyToTheBottomOfLimiter", "ck-sticky-panel__content_sticky_bottom-limit" ), ], style: { width: e.to("isSticky", (t) => t ? ST( this._contentPanelPlaceholder.getBoundingClientRect() .width ) : null ), top: e.to("_stickyTopOffset", (t) => (t ? ST(t) : t)), bottom: e.to("_stickyBottomOffset", (t) => (t ? ST(t) : t)), marginLeft: e.to("_marginLeft"), }, }, children: this.content, }).render(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-sticky-panel"] }, children: [this._contentPanelPlaceholder, this.contentPanelElement], }); } render() { super.render(); this.checkIfShouldBeSticky(); this.listenTo( e.document, "scroll", () => { this.checkIfShouldBeSticky(); }, { useCapture: true } ); this.listenTo(this, "change:isActive", () => { this.checkIfShouldBeSticky(); }); } checkIfShouldBeSticky() { if (!this.limiterElement || !this.isActive) { this._unstick(); return; } const t = new lc(this.limiterElement); let n = t.getVisible(); if (n) { const t = new lc(e.window); t.top += this.viewportTopOffset; t.height -= this.viewportTopOffset; n = n.getIntersection(t); } if (n && t.top < n.top) { const e = n.top; if ( e + this._contentPanelRect.height + this.limiterBottomOffset > n.bottom ) { const e = Math.max(t.bottom - n.bottom, 0) + this.limiterBottomOffset; if (t.bottom - e > t.top + this._contentPanelRect.height) { this._stickToBottomOfLimiter(e); } else { this._unstick(); } } else { if ( this._contentPanelRect.height + this.limiterBottomOffset < t.height ) { this._stickToTopOfAncestors(e); } else { this._unstick(); } } } else { this._unstick(); } } _stickToTopOfAncestors(t) { this.isSticky = true; this._isStickyToTheBottomOfLimiter = false; this._stickyTopOffset = t; this._stickyBottomOffset = null; this._marginLeft = ST(-e.window.scrollX); } _stickToBottomOfLimiter(t) { this.isSticky = true; this._isStickyToTheBottomOfLimiter = true; this._stickyTopOffset = null; this._stickyBottomOffset = t; this._marginLeft = ST(-e.window.scrollX); } _unstick() { this.isSticky = false; this._isStickyToTheBottomOfLimiter = false; this._stickyTopOffset = null; this._stickyBottomOffset = null; this._marginLeft = null; } get _contentPanelRect() { return new lc(this.contentPanelElement); } } class BT extends Uy { constructor(t, e) { const n = t.t; const i = Object.assign( {}, { showResetButton: true, showIcon: true, creator: uE }, e ); super(t, i.creator); this.label = e.label; this._viewConfig = i; if (this._viewConfig.showIcon) { this.iconView = new Zv(); this.iconView.content = Bv.loupe; this.fieldWrapperChildren.add(this.iconView, 0); this.extendTemplate({ attributes: { class: "ck-search__query_with-icon" }, }); } if (this._viewConfig.showResetButton) { this.resetButtonView = new iy(t); this.resetButtonView.set({ label: n("Clear"), icon: Bv.cancel, class: "ck-search__reset", isVisible: false, tooltip: true, }); this.resetButtonView.on("execute", () => { this.reset(); this.focus(); this.fire("reset"); }); this.resetButtonView .bind("isVisible") .to(this.fieldView, "isEmpty", (t) => !t); this.fieldWrapperChildren.add(this.resetButtonView); this.extendTemplate({ attributes: { class: "ck-search__query_with-reset" }, }); } } reset() { this.fieldView.reset(); if (this._viewConfig.showResetButton) { this.resetButtonView.isVisible = false; } } } class MT extends nu { constructor() { super(); const t = this.bindTemplate; this.set({ isVisible: false, primaryText: "", secondaryText: "" }); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-search__info", t.if("isVisible", "ck-hidden", (t) => !t), ], tabindex: -1, }, children: [ { tag: "span", children: [{ text: [t.to("primaryText")] }] }, { tag: "span", children: [{ text: [t.to("secondaryText")] }] }, ], }); } focus() { this.element.focus(); } } class IT extends nu { constructor(t) { super(t); this.children = this.createCollection(); this.focusTracker = new od(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-search__results"], tabindex: -1 }, children: this.children, }); this._focusCycler = new mx({ focusables: this.children, focusTracker: this.focusTracker, }); } render() { super.render(); for (const t of this.children) { this.focusTracker.add(t.element); } } focus() { this._focusCycler.focusFirst(); } focusFirst() { this._focusCycler.focusFirst(); } focusLast() { this._focusCycler.focusLast(); } } var LT = /[\\^$.*+?()[\]{}|]/g, NT = RegExp(LT.source); function zT(t) { t = bh(t); return t && NT.test(t) ? t.replace(LT, "\\$&") : t; } const PT = zT; var RT = n(9381); var VT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; VT.insert = "head"; VT.singleton = true; var OT = Zd()(RT.A, VT); const FT = RT.A.locals || {}; class jT extends nu { constructor(t, e) { super(t); this._config = e; this.filteredView = e.filteredView; this.queryView = this._createSearchTextQueryView(); this.focusTracker = new od(); this.keystrokes = new rd(); this.resultsView = new IT(t); this.children = this.createCollection(); this.focusableChildren = this.createCollection([ this.queryView, this.resultsView, ]); this.set("isEnabled", true); this.set("resultsCount", 0); this.set("totalItemsCount", 0); if (e.infoView && e.infoView.instance) { this.infoView = e.infoView.instance; } else { this.infoView = new MT(); this._enableDefaultInfoViewBehavior(); this.on("render", () => { this.search(""); }); } this.resultsView.children.addMany([this.infoView, this.filteredView]); this.focusCycler = new mx({ focusables: this.focusableChildren, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.on("search", (t, { resultsCount: e, totalItemsCount: n }) => { this.resultsCount = e; this.totalItemsCount = n; }); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-search", e.class || null], tabindex: "-1", }, children: this.children, }); } render() { super.render(); this.children.addMany([this.queryView, this.resultsView]); const t = (t) => t.stopPropagation(); for (const t of this.focusableChildren) { this.focusTracker.add(t.element); } this.keystrokes.listenTo(this.element); this.keystrokes.set("arrowright", t); this.keystrokes.set("arrowleft", t); this.keystrokes.set("arrowup", t); this.keystrokes.set("arrowdown", t); } focus() { this.queryView.focus(); } reset() { this.queryView.reset(); this.search(""); } search(t) { const e = t ? new RegExp(PT(t), "ig") : null; const n = this.filteredView.filter(e); this.fire("search", { query: t, ...n }); } _createSearchTextQueryView() { const t = new BT(this.locale, this._config.queryView); this.listenTo(t.fieldView, "input", () => { this.search(t.fieldView.element.value); }); t.on("reset", () => this.reset()); t.bind("isEnabled").to(this); return t; } _enableDefaultInfoViewBehavior() { const t = this.locale.t; const e = this.infoView; this.on("search", (i, o) => { if (!o.resultsCount) { const i = this._config.infoView && this._config.infoView.text; let r, s; if (o.totalItemsCount) { if (i && i.notFound) { r = i.notFound.primary; s = i.notFound.secondary; } else { r = t("No results found"); s = ""; } } else { if (i && i.noSearchableItems) { r = i.noSearchableItems.primary; s = i.noSearchableItems.secondary; } else { r = t("No searchable items"); s = ""; } } e.set({ primaryText: n(r, o), secondaryText: n(s, o), isVisible: true, }); } else { e.set({ isVisible: false }); } }); function n(t, { query: e, resultsCount: n, totalItemsCount: i }) { return typeof t === "function" ? t(e, n, i) : t; } } } var HT = n(5169); var UT = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; UT.insert = "head"; UT.singleton = true; var $T = Zd()(HT.A, UT); const qT = HT.A.locals || {}; class WT extends jT { constructor(t, n) { super(t, n); this._config = n; const i = wc("px"); this.extendTemplate({ attributes: { class: ["ck-autocomplete"] } }); const o = this.resultsView.bindTemplate; this.resultsView.set("isVisible", false); this.resultsView.set("_position", "s"); this.resultsView.set("_width", 0); this.resultsView.extendTemplate({ attributes: { class: [ o.if("isVisible", "ck-hidden", (t) => !t), o.to("_position", (t) => `ck-search__results_${t}`), ], style: { width: o.to("_width", i) }, }, }); this.focusTracker.on("change:isFocused", (t, e, i) => { this._updateResultsVisibility(); if (i) { this.resultsView.element.scrollTop = 0; } else if (n.resetOnBlur) { this.queryView.reset(); } }); this.on("search", () => { this._updateResultsVisibility(); this._updateResultsViewWidthAndPosition(); }); this.keystrokes.set("esc", (t, e) => { if (!this.resultsView.isVisible) { return; } this.queryView.focus(); this.resultsView.isVisible = false; e(); }); this.listenTo(e.document, "scroll", () => { this._updateResultsViewWidthAndPosition(); }); this.on("change:isEnabled", () => { this._updateResultsVisibility(); }); this.filteredView.on("execute", (t, { value: e }) => { this.focus(); this.reset(); this.queryView.fieldView.value = this.queryView.fieldView.element.value = e; this.resultsView.isVisible = false; }); this.resultsView.on("change:isVisible", () => { this._updateResultsViewWidthAndPosition(); }); } _updateResultsViewWidthAndPosition() { if (!this.resultsView.isVisible) { return; } this.resultsView._width = new lc( this.queryView.fieldView.element ).width; const t = WT._getOptimalPosition({ element: this.resultsView.element, target: this.queryView.element, fitInViewport: true, positions: WT.defaultResultsPositions, }); this.resultsView._position = t ? t.name : "s"; } _updateResultsVisibility() { const t = typeof this._config.queryMinChars === "undefined" ? 0 : this._config.queryMinChars; const e = this.queryView.fieldView.element.value.length; this.resultsView.isVisible = this.focusTracker.isFocused && this.isEnabled && e >= t; } } WT.defaultResultsPositions = [ (t) => ({ top: t.bottom, left: t.left, name: "s" }), (t, e) => ({ top: t.top - e.height, left: t.left, name: "n" }), ]; WT._getOptimalPosition = xc; const GT = null && WT; function KT(t) { return function (e) { return t == null ? undefined : t[e]; }; } const YT = KT; var QT = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", }; var ZT = YT(QT); const JT = ZT; var XT = /[&<>"']/g, tB = RegExp(XT.source); function eB(t) { t = bh(t); return t && tB.test(t) ? t.replace(XT, JT) : t; } const nB = eB; var iB = n(2859); var oB = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; oB.insert = "head"; oB.singleton = true; var rB = Zd()(iB.A, oB); const sB = iB.A.locals || {}; class aB extends nu { constructor() { super(); this.set("text", undefined); this.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-highlighted-text"] }, }); this.on("render", () => { this.on("change:text", () => { this._updateInnerHTML(this.text); }); this._updateInnerHTML(this.text); }); } highlightText(t) { this._updateInnerHTML(cB(this.text || "", t)); } _updateInnerHTML(t) { this.element.innerHTML = t || ""; } } function cB(t, e) { if (!e) { return nB(t); } const n = []; let i = 0; let o = e.exec(t); while (o !== null) { const r = o.index; if (r !== i) { n.push({ text: t.substring(i, r), isMatch: false }); } n.push({ text: o[0], isMatch: true }); i = e.lastIndex; o = e.exec(t); } if (i !== t.length) { n.push({ text: t.substring(i), isMatch: false }); } const r = n .map((t) => { t.text = nB(t.text); return t; }) .map((t) => (t.isMatch ? `${t.text}` : t.text)) .join(""); return r; } var lB = n(6047); var dB = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; dB.insert = "head"; dB.singleton = true; var uB = Zd()(lB.A, dB); const hB = lB.A.locals || {}; class mB extends nu { constructor() { super(); this.set("isVisible", false); const t = this.bindTemplate; this.setTemplate({ tag: "span", attributes: { class: [ "ck", "ck-spinner-container", t.if("isVisible", "ck-hidden", (t) => !t), ], }, children: [ { tag: "span", attributes: { class: ["ck", "ck-spinner"] } }, ], }); } } const gB = wc("px"); class fB extends au { static get pluginName() { return "BalloonToolbar"; } static get requires() { return [_T]; } constructor(t) { super(t); this._resizeObserver = null; this._balloonConfig = Ax(t.config.get("balloonToolbar")); this.toolbarView = this._createToolbarView(); this.focusTracker = new od(); t.ui.once("ready", () => { this.focusTracker.add(t.ui.getEditableElement()); this.focusTracker.add(this.toolbarView.element); }); t.ui.addToolbar(this.toolbarView, { beforeFocus: () => this.show(true), afterBlur: () => this.hide(), isContextual: true, }); this._balloon = t.plugins.get(_T); this._fireSelectionChangeDebounced = Zg( () => this.fire("_selectionChangeDebounced"), 200 ); this.decorate("show"); } init() { const t = this.editor; const e = t.model.document.selection; this.listenTo(this.focusTracker, "change:isFocused", (t, e, n) => { const i = this._balloon.visibleView === this.toolbarView; if (!n && i) { this.hide(); } else if (n) { this.show(); } }); this.listenTo(e, "change:range", (t, n) => { if (n.directChange || e.isCollapsed) { this.hide(); } this._fireSelectionChangeDebounced(); }); this.listenTo(this, "_selectionChangeDebounced", () => { if (this.editor.editing.view.document.isFocused) { this.show(); } }); if (!this._balloonConfig.shouldNotGroupWhenFull) { this.listenTo(t, "ready", () => { const e = t.ui.view.editable.element; this._resizeObserver = new kc(e, (t) => { this.toolbarView.maxWidth = gB(t.contentRect.width * 0.9); }); }); } this.listenTo(this.toolbarView, "groupedItemsUpdate", () => { this._updatePosition(); }); t.ui.once("ready", () => { this.toolbarView.fillFromConfig( this._balloonConfig, this.editor.ui.componentFactory ); }); } _createToolbarView() { const t = this.editor.locale.t; const e = !this._balloonConfig.shouldNotGroupWhenFull; const n = new Ex(this.editor.locale, { shouldGroupWhenFull: e, isFloating: true, }); n.ariaLabel = t("Editor contextual toolbar"); n.render(); return n; } show(t = false) { const e = this.editor; const n = e.model.document.selection; const i = e.model.schema; if (this._balloon.hasView(this.toolbarView)) { return; } if (n.isCollapsed && !t) { return; } if (pB(n, i)) { return; } if ( Array.from(this.toolbarView.items).every( (t) => t.isEnabled !== undefined && !t.isEnabled ) ) { return; } this.listenTo(this.editor.ui, "update", () => { this._updatePosition(); }); this._balloon.add({ view: this.toolbarView, position: this._getBalloonPositionData(), balloonClassName: "ck-toolbar-container", }); } hide() { if (this._balloon.hasView(this.toolbarView)) { this.stopListening(this.editor.ui, "update"); this._balloon.remove(this.toolbarView); } } _getBalloonPositionData() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = n.selection; const o = n.selection.isBackward; return { target: () => { const t = o ? i.getFirstRange() : i.getLastRange(); const n = lc.getDomRangeRects(e.domConverter.viewRangeToDom(t)); if (o) { return n[0]; } else { if (n.length > 1 && n[n.length - 1].width === 0) { n.pop(); } return n[n.length - 1]; } }, positions: this._getBalloonPositions(o), }; } _updatePosition() { this._balloon.updatePosition(this._getBalloonPositionData()); } destroy() { super.destroy(); this.stopListening(); this._fireSelectionChangeDebounced.cancel(); this.toolbarView.destroy(); this.focusTracker.destroy(); if (this._resizeObserver) { this._resizeObserver.destroy(); } } _getBalloonPositions(t) { const n = a.isSafari && a.isiOS; const i = n ? bS({ heightOffset: Math.max( pS.arrowHeightOffset, Math.round(20 / e.window.visualViewport.scale) ), }) : pS.defaultPositions; return t ? [ i.northWestArrowSouth, i.northWestArrowSouthWest, i.northWestArrowSouthEast, i.northWestArrowSouthMiddleEast, i.northWestArrowSouthMiddleWest, i.southWestArrowNorth, i.southWestArrowNorthWest, i.southWestArrowNorthEast, i.southWestArrowNorthMiddleWest, i.southWestArrowNorthMiddleEast, ] : [ i.southEastArrowNorth, i.southEastArrowNorthEast, i.southEastArrowNorthWest, i.southEastArrowNorthMiddleEast, i.southEastArrowNorthMiddleWest, i.northEastArrowSouth, i.northEastArrowSouthEast, i.northEastArrowSouthWest, i.northEastArrowSouthMiddleEast, i.northEastArrowSouthMiddleWest, ]; } } function pB(t, e) { if (t.rangeCount === 1) { return false; } return [...t.getRanges()].every((t) => { const n = t.getContainedElement(); return n && e.isSelectable(n); }); } var kB = n(8604); var bB = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; bB.insert = "head"; bB.singleton = true; var wB = Zd()(kB.A, bB); const AB = kB.A.locals || {}; const _B = wc("px"); class CB extends iy { constructor(t) { super(t); const e = this.bindTemplate; this.isVisible = false; this.isToggleable = true; this.set("top", 0); this.set("left", 0); this.extendTemplate({ attributes: { class: "ck-block-toolbar-button", style: { top: e.to("top", (t) => _B(t)), left: e.to("left", (t) => _B(t)), }, }, }); } } const vB = wc("px"); class yB extends au { static get pluginName() { return "BlockToolbar"; } constructor(t) { super(t); this._resizeObserver = null; this._blockToolbarConfig = Ax(this.editor.config.get("blockToolbar")); this.toolbarView = this._createToolbarView(); this.panelView = this._createPanelView(); this.buttonView = this._createButtonView(); iu({ emitter: this.panelView, contextElements: [this.panelView.element, this.buttonView.element], activator: () => this.panelView.isVisible, callback: () => this._hidePanel(), }); } init() { const t = this.editor; const e = t.t; const n = e("Click to edit block"); const i = e("Drag to move"); const o = e("Edit block"); const r = t.plugins.has("DragDropBlockToolbar"); const s = r ? `${n}\n${i}` : o; this.buttonView.label = s; if (r) { this.buttonView.element.dataset.ckeTooltipClass = "ck-tooltip_multi-line"; } this.listenTo(t.model.document.selection, "change:range", (t, e) => { if (e.directChange) { this._hidePanel(); } }); this.listenTo(t.ui, "update", () => this._updateButton()); this.listenTo(t, "change:isReadOnly", () => this._updateButton(), { priority: "low", }); this.listenTo(t.ui.focusTracker, "change:isFocused", () => this._updateButton() ); this.listenTo(this.buttonView, "change:isVisible", (t, e, n) => { if (n) { this.buttonView.listenTo(window, "resize", () => this._updateButton() ); } else { this.buttonView.stopListening(window, "resize"); this._hidePanel(); } }); t.ui.addToolbar(this.toolbarView, { beforeFocus: () => this._showPanel(), afterBlur: () => this._hidePanel(), }); t.ui.once("ready", () => { this.toolbarView.fillFromConfig( this._blockToolbarConfig, this.editor.ui.componentFactory ); for (const t of this.toolbarView.items) { t.on("execute", () => this._hidePanel(true), { priority: "high", }); } }); } destroy() { super.destroy(); this.panelView.destroy(); this.buttonView.destroy(); this.toolbarView.destroy(); if (this._resizeObserver) { this._resizeObserver.destroy(); } } _createToolbarView() { const t = this.editor.locale.t; const e = !this._blockToolbarConfig.shouldNotGroupWhenFull; const n = new Ex(this.editor.locale, { shouldGroupWhenFull: e, isFloating: true, }); n.ariaLabel = t("Editor block content toolbar"); return n; } _createPanelView() { const t = this.editor; const e = new pS(t.locale); e.content.add(this.toolbarView); e.class = "ck-toolbar-container"; t.ui.view.body.add(e); t.ui.focusTracker.add(e.element); this.toolbarView.keystrokes.set("Esc", (t, e) => { this._hidePanel(true); e(); }); return e; } _createButtonView() { const t = this.editor; const e = t.t; const n = new CB(t.locale); const i = this._blockToolbarConfig.icon; const o = xx[i] || i || xx.dragIndicator; n.set({ label: e("Edit block"), icon: o, withText: false }); n.bind("isOn").to(this.panelView, "isVisible"); n.bind("tooltip").to(this.panelView, "isVisible", (t) => !t); this.listenTo(n, "execute", () => { if (!this.panelView.isVisible) { this._showPanel(); } else { this._hidePanel(true); } }); t.ui.view.body.add(n); t.ui.focusTracker.add(n.element); return n; } _updateButton() { const t = this.editor; const e = t.model; const n = t.editing.view; if (!t.ui.focusTracker.isFocused) { this._hideButton(); return; } if (!t.model.canEditAt(t.model.document.selection)) { this._hideButton(); return; } const i = Array.from(e.document.selection.getSelectedBlocks())[0]; if ( !i || Array.from(this.toolbarView.items).every((t) => !t.isEnabled) ) { this._hideButton(); return; } const o = n.domConverter.mapViewToDom( t.editing.mapper.toViewElement(i) ); this.buttonView.isVisible = true; this._setupToolbarResize(); this._attachButtonToElement(o); if (this.panelView.isVisible) { this._showPanel(); } } _hideButton() { this.buttonView.isVisible = false; } _showPanel() { if (!this.buttonView.isVisible) { return; } const t = this.panelView.isVisible; this.panelView.show(); const e = this._getSelectedEditableElement(); this.toolbarView.maxWidth = this._getToolbarMaxWidth(e); this.panelView.pin({ target: this.buttonView.element, limiter: e }); if (!t) { this.toolbarView.items.get(0).focus(); } } _getSelectedEditableElement() { const t = this.editor.model.document.selection.getFirstRange().root.rootName; return this.editor.ui.getEditableElement(t); } _hidePanel(t) { this.panelView.isVisible = false; if (t) { this.editor.editing.view.focus(); } } _attachButtonToElement(t) { const e = window.getComputedStyle(t); const n = new lc(this._getSelectedEditableElement()); const i = parseInt(e.paddingTop, 10); const o = parseInt(e.lineHeight, 10) || parseInt(e.fontSize, 10) * 1.2; const r = new lc(this.buttonView.element); const s = new lc(t); let a; if (this.editor.locale.uiLanguageDirection === "ltr") { a = n.left - r.width; } else { a = n.right; } const c = s.top + i + (o - r.height) / 2; r.moveTo(a, c); const l = r.toAbsoluteRect(); this.buttonView.top = l.top; this.buttonView.left = l.left; } _setupToolbarResize() { const t = this._getSelectedEditableElement(); if (!this._blockToolbarConfig.shouldNotGroupWhenFull) { if (this._resizeObserver && this._resizeObserver.element !== t) { this._resizeObserver.destroy(); this._resizeObserver = null; } if (!this._resizeObserver) { this._resizeObserver = new kc(t, () => { this.toolbarView.maxWidth = this._getToolbarMaxWidth(t); }); } } } _getToolbarMaxWidth(t) { const e = new lc(t); const n = new lc(this.buttonView.element); const i = this.editor.locale.uiLanguageDirection === "rtl"; const o = i ? n.left - e.right + n.width : e.left - n.left; return vB(e.width + o); } } var xB = n(6050); var EB = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; EB.insert = "head"; EB.singleton = true; var DB = Zd()(xB.A, EB); const SB = xB.A.locals || {}; class TB extends iy { constructor(t) { super(t); const e = this.bindTemplate; this.set({ withText: true, role: "menuitem" }); this.arrowView = this._createArrowView(); this.extendTemplate({ attributes: { class: ["ck-menu-bar__menu__button"], "aria-haspopup": true, "aria-expanded": this.bindTemplate.to("isOn", (t) => String(t)), "data-cke-tooltip-disabled": e.to("isOn"), }, on: { mouseenter: e.to("mouseenter") }, }); } render() { super.render(); this.children.add(this.arrowView); } _createArrowView() { const t = new Zv(); t.content = uy; t.extendTemplate({ attributes: { class: "ck-menu-bar__menu__button__arrow" }, }); return t; } } var BB = n(3835); var MB = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; MB.insert = "head"; MB.singleton = true; var IB = Zd()(BB.A, MB); const LB = BB.A.locals || {}; class NB extends Bx { constructor(t, e) { super(t); const n = this.bindTemplate; this.extendTemplate({ attributes: { class: ["ck-menu-bar__menu__item"] }, on: { mouseenter: n.to("mouseenter") }, }); this.delegate("mouseenter").to(e); } } const zB = 5; const PB = { toggleMenusAndFocusItemsOnHover(t) { t.on("menu:mouseenter", (e) => { if (!t.isOpen) { return; } for (const n of t.menus) { const t = e.path[0]; const i = t instanceof NB && t.children.first === n; n.isOpen = (e.path.includes(n) || i) && n.isEnabled; } e.source.focus(); }); }, focusCycleMenusOnArrows(t) { const e = t.locale.uiLanguageDirection === "rtl"; t.on("menu:arrowright", (t) => { n(t.source, e ? -1 : 1); }); t.on("menu:arrowleft", (t) => { n(t.source, e ? 1 : -1); }); function n(e, n) { const i = t.children.getIndex(e); const o = e.isOpen; const r = t.children.length; const s = t.children.get((i + r + n) % r); e.isOpen = false; if (o) { s.isOpen = true; } s.buttonView.focus(); } }, closeMenusWhenTheBarCloses(t) { t.on("change:isOpen", () => { if (!t.isOpen) { t.menus.forEach((t) => { t.isOpen = false; }); } }); }, closeMenuWhenAnotherOnTheSameLevelOpens(t) { t.on("menu:change:isOpen", (e, n, i) => { if (i) { t.menus .filter( (t) => e.source.parentMenuView === t.parentMenuView && e.source !== t && t.isOpen ) .forEach((t) => { t.isOpen = false; }); } }); }, closeOnClickOutside(t) { iu({ emitter: t, activator: () => t.isOpen, callback: () => t.close(), contextElements: () => t.children.map((t) => t.element), }); }, }; const RB = { openAndFocusPanelOnArrowDownKey(t) { t.keystrokes.set("arrowdown", (e, n) => { if (t.focusTracker.focusedElement === t.buttonView.element) { if (!t.isOpen) { t.isOpen = true; } t.panelView.focus(); n(); } }); }, openOnArrowRightKey(t) { const e = t.locale.uiLanguageDirection === "rtl" ? "arrowleft" : "arrowright"; t.keystrokes.set(e, (e, n) => { if ( t.focusTracker.focusedElement !== t.buttonView.element || !t.isEnabled ) { return; } if (!t.isOpen) { t.isOpen = true; } t.panelView.focus(); n(); }); }, openOnButtonClick(t) { t.buttonView.on("execute", () => { t.isOpen = true; t.panelView.focus(); }); }, toggleOnButtonClick(t) { t.buttonView.on("execute", () => { t.isOpen = !t.isOpen; if (t.isOpen) { t.panelView.focus(); } }); }, closeOnArrowLeftKey(t) { const e = t.locale.uiLanguageDirection === "rtl" ? "arrowright" : "arrowleft"; t.keystrokes.set(e, (e, n) => { if (t.isOpen) { t.isOpen = false; t.focus(); n(); } }); }, closeOnEscKey(t) { t.keystrokes.set("esc", (e, n) => { if (t.isOpen) { t.isOpen = false; t.focus(); n(); } }); }, closeOnParentClose(t) { t.parentMenuView.on("change:isOpen", (e, n, i) => { if (!i && e.source === t.parentMenuView) { t.isOpen = false; } }); }, }; const VB = { southEast: (t) => ({ top: t.bottom, left: t.left, name: "se" }), southWest: (t, e) => ({ top: t.bottom, left: t.left - e.width + t.width, name: "sw", }), northEast: (t, e) => ({ top: t.top - e.height, left: t.left, name: "ne", }), northWest: (t, e) => ({ top: t.top - e.height, left: t.left - e.width + t.width, name: "nw", }), eastSouth: (t) => ({ top: t.top, left: t.right - zB, name: "es" }), eastNorth: (t, e) => ({ top: t.top - e.height, left: t.right - zB, name: "en", }), westSouth: (t, e) => ({ top: t.top, left: t.left - e.width + zB, name: "ws", }), westNorth: (t, e) => ({ top: t.top - e.height, left: t.left - e.width + zB, name: "wn", }), }; const OB = [ { menuId: "file", label: "File", groups: [ { groupId: "export", items: ["menuBar:exportPdf", "menuBar:exportWord"], }, { groupId: "import", items: ["menuBar:importWord"] }, { groupId: "revisionHistory", items: ["menuBar:revisionHistory"] }, ], }, { menuId: "edit", label: "Edit", groups: [ { groupId: "undo", items: ["menuBar:undo", "menuBar:redo"] }, { groupId: "selectAll", items: ["menuBar:selectAll"] }, { groupId: "findAndReplace", items: ["menuBar:findAndReplace"] }, ], }, { menuId: "view", label: "View", groups: [ { groupId: "sourceEditing", items: ["menuBar:sourceEditing"] }, { groupId: "showBlocks", items: ["menuBar:showBlocks"] }, { groupId: "restrictedEditingException", items: ["menuBar:restrictedEditingException"], }, ], }, { menuId: "insert", label: "Insert", groups: [ { groupId: "insertMainWidgets", items: [ "menuBar:uploadImage", "menuBar:ckbox", "menuBar:ckfinder", "menuBar:insertTable", ], }, { groupId: "insertInline", items: ["menuBar:link", "menuBar:comment"], }, { groupId: "insertMinorWidgets", items: [ "menuBar:insertTemplate", "menuBar:blockQuote", "menuBar:codeBlock", "menuBar:htmlEmbed", ], }, { groupId: "insertStructureWidgets", items: [ "menuBar:horizontalLine", "menuBar:pageBreak", "menuBar:tableOfContents", ], }, { groupId: "restrictedEditing", items: ["menuBar:restrictedEditing"], }, ], }, { menuId: "format", label: "Format", groups: [ { groupId: "textAndFont", items: [ { menuId: "text", label: "Text", groups: [ { groupId: "basicStyles", items: [ "menuBar:bold", "menuBar:italic", "menuBar:underline", "menuBar:strikethrough", "menuBar:superscript", "menuBar:subscript", "menuBar:code", ], }, { groupId: "textPartLanguage", items: ["menuBar:textPartLanguage"], }, ], }, { menuId: "font", label: "Font", groups: [ { groupId: "fontProperties", items: ["menuBar:fontSize", "menuBar:fontFamily"], }, { groupId: "fontColors", items: [ "menuBar:fontColor", "menuBar:fontBackgroundColor", ], }, { groupId: "highlight", items: ["menuBar:highlight"] }, ], }, "menuBar:heading", ], }, { groupId: "list", items: [ "menuBar:bulletedList", "menuBar:numberedList", "menuBar:todoList", ], }, { groupId: "indent", items: ["menuBar:alignment", "menuBar:indent", "menuBar:outdent"], }, { groupId: "caseChange", items: ["menuBar:caseChange"] }, { groupId: "removeFormat", items: ["menuBar:removeFormat"] }, ], }, { menuId: "tools", label: "Tools", groups: [ { groupId: "aiTools", items: ["menuBar:aiAssistant", "menuBar:aiCommands"], }, { groupId: "tools", items: ["menuBar:trackChanges", "menuBar:commentsArchive"], }, ], }, { menuId: "help", label: "Help", groups: [{ groupId: "help", items: ["menuBar:accessibilityHelp"] }], }, ]; function FB(t) { let e; if (!("items" in t) || !t.items) { e = { items: hp(OB), addItems: [], removeItems: [], isVisible: true, isUsingDefaultConfig: true, ...t, }; } else { e = { items: t.items, removeItems: [], addItems: [], isVisible: true, isUsingDefaultConfig: false, ...t, }; } return e; } function jB({ normalizedConfig: t, locale: e, componentFactory: n }) { const i = hp(t); HB(t, i); UB(t, i); qB(t, i, n); WB(t, i); KB(i, e); return i; } function HB(t, e) { const n = e.removeItems; const i = []; e.items = e.items.filter(({ menuId: t }) => { if (n.includes(t)) { i.push(t); return false; } return true; }); YB(e.items, (t) => { t.groups = t.groups.filter(({ groupId: t }) => { if (n.includes(t)) { i.push(t); return false; } return true; }); for (const e of t.groups) { e.items = e.items.filter((t) => { const e = tM(t); if (n.includes(e)) { i.push(e); return false; } return true; }); } }); for (const e of n) { if (!i.includes(e)) { z("menu-bar-item-could-not-be-removed", { menuBarConfig: t, itemName: e, }); } } } function UB(t, e) { const n = e.addItems; const i = []; for (const t of n) { const n = JB(t.position); const o = XB(t.position); if (QB(t)) { if (!o) { if (n === "start") { e.items.unshift(t.menu); i.push(t); } else if (n === "end") { e.items.push(t.menu); i.push(t); } } else { const r = e.items.findIndex((t) => t.menuId === o); if (r != -1) { if (n === "before") { e.items.splice(r, 0, t.menu); i.push(t); } else if (n === "after") { e.items.splice(r + 1, 0, t.menu); i.push(t); } } else { const r = $B(e, t.menu, o, n); if (r) { i.push(t); } } } } else if (ZB(t)) { YB(e.items, (e) => { if (e.menuId === o) { if (n === "start") { e.groups.unshift(t.group); i.push(t); } else if (n === "end") { e.groups.push(t.group); i.push(t); } } else { const r = e.groups.findIndex((t) => t.groupId === o); if (r !== -1) { if (n === "before") { e.groups.splice(r, 0, t.group); i.push(t); } else if (n === "after") { e.groups.splice(r + 1, 0, t.group); i.push(t); } } } }); } else { const r = $B(e, t.item, o, n); if (r) { i.push(t); } } } for (const e of n) { if (!i.includes(e)) { z("menu-bar-item-could-not-be-added", { menuBarConfig: t, addedItemConfig: e, }); } } } function $B(t, e, n, i) { let o = false; YB(t.items, (t) => { for (const { groupId: r, items: s } of t.groups) { if (o) { return; } if (r === n) { if (i === "start") { s.unshift(e); o = true; } else if (i === "end") { s.push(e); o = true; } } else { const t = s.findIndex((t) => tM(t) === n); if (t !== -1) { if (i === "before") { s.splice(t, 0, e); o = true; } else if (i === "after") { s.splice(t + 1, 0, e); o = true; } } } } }); return o; } function qB(t, e, n) { YB(e.items, (i) => { for (const o of i.groups) { o.items = o.items.filter((o) => { const r = typeof o === "string" && !n.has(o); if (r && !e.isUsingDefaultConfig) { z("menu-bar-item-unavailable", { menuBarConfig: t, parentMenuConfig: hp(i), componentName: o, }); } return !r; }); } }); } function WB(t, e) { const n = e.isUsingDefaultConfig; let i = false; e.items = e.items.filter((e) => { if (!e.groups.length) { GB(t, e, n); return false; } return true; }); if (!e.items.length) { GB(t, t, n); return; } YB(e.items, (e) => { e.groups = e.groups.filter((t) => { if (!t.items.length) { i = true; return false; } return true; }); for (const o of e.groups) { o.items = o.items.filter((e) => { if (eM(e) && !e.groups.length) { GB(t, e, n); i = true; return false; } return true; }); } }); if (i) { WB(t, e); } } function GB(t, e, n) { if (n) { return; } z("menu-bar-menu-empty", { menuBarConfig: t, emptyMenuConfig: e }); } function KB(t, e) { const n = e.t; const i = { File: n({ string: "File", id: "MENU_BAR_MENU_FILE" }), Edit: n({ string: "Edit", id: "MENU_BAR_MENU_EDIT" }), View: n({ string: "View", id: "MENU_BAR_MENU_VIEW" }), Insert: n({ string: "Insert", id: "MENU_BAR_MENU_INSERT" }), Format: n({ string: "Format", id: "MENU_BAR_MENU_FORMAT" }), Tools: n({ string: "Tools", id: "MENU_BAR_MENU_TOOLS" }), Help: n({ string: "Help", id: "MENU_BAR_MENU_HELP" }), Text: n({ string: "Text", id: "MENU_BAR_MENU_TEXT" }), Font: n({ string: "Font", id: "MENU_BAR_MENU_FONT" }), }; YB(t.items, (t) => { if (t.label in i) { t.label = i[t.label]; } }); } function YB(t, e) { if (Array.isArray(t)) { for (const e of t) { n(e); } } function n(t) { e(t); for (const e of t.groups) { for (const t of e.items) { if (eM(t)) { n(t); } } } } } function QB(t) { return typeof t === "object" && "menu" in t; } function ZB(t) { return typeof t === "object" && "group" in t; } function JB(t) { if (t.startsWith("start")) { return "start"; } else if (t.startsWith("end")) { return "end"; } else if (t.startsWith("after")) { return "after"; } else { return "before"; } } function XB(t) { const e = t.match(/^[^:]+:(.+)/); if (e) { return e[1]; } return null; } function tM(t) { return typeof t === "string" ? t : t.menuId; } function eM(t) { return typeof t === "object" && "menuId" in t; } function nM(t, e) { const n = e.element; t.ui.focusTracker.add(n); t.keystrokes.listenTo(n); const i = FB(t.config.get("menuBar") || {}); e.fillFromConfig(i, t.ui.componentFactory); t.keystrokes.set("Esc", (e, i) => { if (n.contains(t.ui.focusTracker.focusedElement)) { t.editing.view.focus(); i(); } }); t.keystrokes.set("Alt+F9", (i, o) => { if (!n.contains(t.ui.focusTracker.focusedElement)) { e.focus(); o(); } }); } var iM = n(5306); var oM = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; oM.insert = "head"; oM.singleton = true; var rM = Zd()(iM.A, oM); const sM = iM.A.locals || {}; class aM extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.set("isVisible", false); this.set("position", "se"); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-reset", "ck-menu-bar__menu__panel", e.to( "position", (t) => `ck-menu-bar__menu__panel_position_${t}` ), e.if("isVisible", "ck-hidden", (t) => !t), ], tabindex: "-1", }, children: this.children, on: { selectstart: e.to((t) => { if (t.target.tagName.toLocaleLowerCase() === "input") { return; } t.preventDefault(); }), }, }); } focus(t = 1) { if (this.children.length) { if (t === 1) { this.children.first.focus(); } else { this.children.last.focus(); } } } } var cM = n(5842); var lM = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; lM.insert = "head"; lM.singleton = true; var dM = Zd()(cM.A, lM); const uM = cM.A.locals || {}; class hM extends nu { constructor(t) { super(t); const e = this.bindTemplate; this.buttonView = new TB(t); this.buttonView.delegate("mouseenter").to(this); this.buttonView .bind("isOn", "isEnabled") .to(this, "isOpen", "isEnabled"); this.panelView = new aM(t); this.panelView.bind("isVisible").to(this, "isOpen"); this.keystrokes = new rd(); this.focusTracker = new od(); this.set("isOpen", false); this.set("isEnabled", true); this.set("panelPosition", "w"); this.set("class", undefined); this.set("parentMenuView", null); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-menu-bar__menu", e.to("class"), e.if("isEnabled", "ck-disabled", (t) => !t), e.if( "parentMenuView", "ck-menu-bar__menu_top-level", (t) => !t ), ], }, children: [this.buttonView, this.panelView], }); } render() { super.render(); this.focusTracker.add(this.buttonView.element); this.focusTracker.add(this.panelView.element); this.keystrokes.listenTo(this.element); RB.closeOnEscKey(this); this._repositionPanelOnOpen(); } _attachBehaviors() { if (!this.parentMenuView) { this._propagateArrowKeystrokeEvents(); RB.openAndFocusPanelOnArrowDownKey(this); RB.toggleOnButtonClick(this); } else { RB.openOnButtonClick(this); RB.openOnArrowRightKey(this); RB.closeOnArrowLeftKey(this); RB.closeOnParentClose(this); } } _propagateArrowKeystrokeEvents() { this.keystrokes.set("arrowright", (t, e) => { this.fire("arrowright"); e(); }); this.keystrokes.set("arrowleft", (t, e) => { this.fire("arrowleft"); e(); }); } _repositionPanelOnOpen() { this.on("change:isOpen", (t, e, n) => { if (!n) { return; } const i = hM._getOptimalPosition({ element: this.panelView.element, target: this.buttonView.element, fitInViewport: true, positions: this._panelPositions, }); this.panelView.position = i ? i.name : this._panelPositions[0].name; }); } focus() { this.buttonView.focus(); } get _panelPositions() { const { southEast: t, southWest: e, northEast: n, northWest: i, westSouth: o, eastSouth: r, westNorth: s, eastNorth: a, } = VB; if (this.locale.uiLanguageDirection === "ltr") { if (this.parentMenuView) { return [r, a, o, s]; } else { return [t, e, n, i]; } } else { if (this.parentMenuView) { return [o, s, r, a]; } else { return [e, t, i, n]; } } } } hM._getOptimalPosition = xc; const mM = hM; class gM extends Rx { constructor(t) { super(t); this.role = "menu"; } } var fM = n(5519); var pM = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; pM.insert = "head"; pM.singleton = true; var kM = Zd()(fM.A, pM); const bM = fM.A.locals || {}; class wM extends iy { constructor(t) { super(t); this.set({ withText: true, withKeystroke: true, tooltip: false, role: "menuitem", }); this.extendTemplate({ attributes: { class: ["ck-menu-bar__menu__item__button"] }, }); } } class AM extends ly { constructor(t) { super(t); this.set({ withText: true, withKeystroke: true, tooltip: false, role: "menuitem", }); this.extendTemplate({ attributes: { class: ["ck-menu-bar__menu__item__button"] }, }); } } var _M = n(3779); var CM = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; CM.insert = "head"; CM.singleton = true; var vM = Zd()(_M.A, CM); const yM = _M.A.locals || {}; const xM = ["mouseenter", "arrowleft", "arrowright", "change:isOpen"]; class EM extends nu { constructor(t) { super(t); this.menus = []; const e = t.t; this.set("isOpen", false); this._setupIsOpenUpdater(); this.children = this.createCollection(); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-menu-bar"], "aria-label": e("Editor menu bar"), role: "menubar", }, children: this.children, }); } fillFromConfig(t, e) { const n = this.locale; const i = jB({ normalizedConfig: t, locale: n, componentFactory: e }); const o = i.items.map((t) => this._createMenu({ componentFactory: e, menuDefinition: t }) ); this.children.addMany(o); } render() { super.render(); PB.toggleMenusAndFocusItemsOnHover(this); PB.closeMenusWhenTheBarCloses(this); PB.closeMenuWhenAnotherOnTheSameLevelOpens(this); PB.focusCycleMenusOnArrows(this); PB.closeOnClickOutside(this); } focus() { if (this.children.first) { this.children.first.focus(); } } close() { for (const t of this.children) { t.isOpen = false; } } registerMenu(t, e = null) { if (e) { t.delegate(...xM).to(e); t.parentMenuView = e; } else { t.delegate(...xM).to(this, (t) => "menu:" + t); } t._attachBehaviors(); this.menus.push(t); } _createMenu({ componentFactory: t, menuDefinition: e, parentMenuView: n, }) { const i = this.locale; const o = new mM(i); this.registerMenu(o, n); o.buttonView.set({ label: e.label }); o.once("change:isOpen", () => { const n = new gM(i); n.ariaLabel = e.label; o.panelView.children.add(n); n.items.addMany( this._createMenuItems({ menuDefinition: e, parentMenuView: o, componentFactory: t, }) ); }); return o; } _createMenuItems({ menuDefinition: t, parentMenuView: e, componentFactory: n, }) { const i = this.locale; const o = []; for (const r of t.groups) { for (const t of r.items) { const r = new NB(i, e); if (st(t)) { r.children.add( this._createMenu({ componentFactory: n, menuDefinition: t, parentMenuView: e, }) ); } else { const i = this._createMenuItemContentFromFactory({ componentName: t, componentFactory: n, parentMenuView: e, }); if (!i) { continue; } r.children.add(i); } o.push(r); } if (r !== t.groups[t.groups.length - 1]) { o.push(new Mx(i)); } } return o; } _createMenuItemContentFromFactory({ componentName: t, parentMenuView: e, componentFactory: n, }) { const i = n.create(t); if (!(i instanceof mM || i instanceof wM || i instanceof AM)) { z("menu-bar-component-unsupported", { componentName: t, componentView: i, }); return null; } this._registerMenuTree(i, e); i.on("execute", () => { this.close(); }); return i; } _registerMenuTree(t, e) { if (!(t instanceof mM)) { t.delegate("mouseenter").to(e); return; } this.registerMenu(t, e); const n = t.panelView.children.filter((t) => t instanceof gM)[0]; if (!n) { t.delegate("mouseenter").to(e); return; } const i = n.items.filter((t) => t instanceof Bx); for (const e of i) { this._registerMenuTree(e.children.get(0), t); } } _setupIsOpenUpdater() { let t; this.on("menu:change:isOpen", (e, n, i) => { clearTimeout(t); if (i) { this.isOpen = true; } else { t = setTimeout(() => { this.isOpen = Array.from(this.children).some((t) => t.isOpen); }, 0); } }); } } class DM extends XS { constructor(t, e) { super(t); this.view = e; this._toolbarConfig = Ax(t.config.get("toolbar")); this._elementReplacer = new yt(); this.listenTo( t.editing.view, "scrollToTheSelection", this._handleScrollToTheSelectionWithStickyPanel.bind(this) ); } get element() { return this.view.element; } init(t) { const e = this.editor; const n = this.view; const i = e.editing.view; const o = n.editable; const r = i.document.getRoot(); o.name = r.rootName; n.render(); const s = o.element; this.setEditableElement(o.name, s); n.editable.bind("isFocused").to(this.focusTracker); i.attachDomRoot(s); if (t) { this._elementReplacer.replace(t, this.element); } this._initPlaceholder(); this._initToolbar(); if (n.menuBarView) { nM(e, n.menuBarView); } this._initDialogPluginIntegration(); this.fire("ready"); } destroy() { super.destroy(); const t = this.view; const e = this.editor.editing.view; this._elementReplacer.restore(); e.detachDomRoot(t.editable.name); t.destroy(); } _initToolbar() { const t = this.view; t.stickyPanel.bind("isActive").to(this.focusTracker, "isFocused"); t.stickyPanel.limiterElement = t.element; t.stickyPanel .bind("viewportTopOffset") .to(this, "viewportOffset", ({ top: t }) => t || 0); t.toolbar.fillFromConfig(this._toolbarConfig, this.componentFactory); this.addToolbar(t.toolbar); } _initPlaceholder() { const t = this.editor; const e = t.editing.view; const n = e.document.getRoot(); const i = t.sourceElement; let o; const r = t.config.get("placeholder"); if (r) { o = typeof r === "string" ? r : r[this.view.editable.name]; } if (!o && i && i.tagName.toLowerCase() === "textarea") { o = i.getAttribute("placeholder"); } if (o) { n.placeholder = o; } _u({ view: e, element: n, isDirectHost: false, keepOnFocus: true }); } _handleScrollToTheSelectionWithStickyPanel(t, e, n) { const i = this.view.stickyPanel; if (i.isSticky) { const t = new lc(i.element).height; e.viewportOffset.top += t; } else { const t = () => { this.editor.editing.view.scrollToTheSelection(n); }; this.listenTo(i, "change:isSticky", t); setTimeout(() => { this.stopListening(i, "change:isSticky", t); }, 20); } } _initDialogPluginIntegration() { if (!this.editor.plugins.has("Dialog")) { return; } const t = this.view.stickyPanel; const e = this.editor.plugins.get("Dialog"); e.on( "show", () => { const n = e.view; n.on( "moveTo", (e, i) => { if (!t.isSticky || n.wasMoved) { return; } const o = new lc(t.contentPanelElement); if (i[1] < o.bottom + rS.defaultOffset) { i[1] = o.bottom + rS.defaultOffset; } }, { priority: "high" } ); }, { priority: "low" } ); } } var SM = n(3394); var TM = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; TM.insert = "head"; TM.singleton = true; var BM = Zd()(SM.A, TM); const MM = SM.A.locals || {}; class IM extends sT { constructor(t, e, n = {}) { super(t); this.stickyPanel = new TT(t); this.toolbar = new Ex(t, { shouldGroupWhenFull: n.shouldToolbarGroupWhenFull, }); if (n.useMenuBar) { this.menuBarView = new EM(t); } this.editable = new cT(t, e); } render() { super.render(); if (this.menuBarView) { this.stickyPanel.content.addMany([this.menuBarView, this.toolbar]); } else { this.stickyPanel.content.add(this.toolbar); } this.top.add(this.stickyPanel); this.main.add(this.editable); } } class LM { constructor(t) { this.crashes = []; this.state = "initializing"; this._now = Date.now; this.crashes = []; this._crashNumberLimit = typeof t.crashNumberLimit === "number" ? t.crashNumberLimit : 3; this._minimumNonErrorTimePeriod = typeof t.minimumNonErrorTimePeriod === "number" ? t.minimumNonErrorTimePeriod : 5e3; this._boundErrorHandler = (t) => { const e = "error" in t ? t.error : t.reason; if (e instanceof Error) { this._handleError(e, t); } }; this._listeners = {}; if (!this._restart) { throw new Error( "The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. " + "Please, use `EditorWatchdog` if you have used the `Watchdog` class previously." ); } } destroy() { this._stopErrorHandling(); this._listeners = {}; } on(t, e) { if (!this._listeners[t]) { this._listeners[t] = []; } this._listeners[t].push(e); } off(t, e) { this._listeners[t] = this._listeners[t].filter((t) => t !== e); } _fire(t, ...e) { const n = this._listeners[t] || []; for (const t of n) { t.apply(this, [null, ...e]); } } _startErrorHandling() { window.addEventListener("error", this._boundErrorHandler); window.addEventListener( "unhandledrejection", this._boundErrorHandler ); } _stopErrorHandling() { window.removeEventListener("error", this._boundErrorHandler); window.removeEventListener( "unhandledrejection", this._boundErrorHandler ); } _handleError(t, e) { if (this._shouldReactToError(t)) { this.crashes.push({ message: t.message, stack: t.stack, filename: e instanceof ErrorEvent ? e.filename : undefined, lineno: e instanceof ErrorEvent ? e.lineno : undefined, colno: e instanceof ErrorEvent ? e.colno : undefined, date: this._now(), }); const n = this._shouldRestart(); this.state = "crashed"; this._fire("stateChange"); this._fire("error", { error: t, causesRestart: n }); if (n) { this._restart(); } else { this.state = "crashedPermanently"; this._fire("stateChange"); } } } _shouldReactToError(t) { return ( t.is && t.is("CKEditorError") && t.context !== undefined && t.context !== null && this.state === "ready" && this._isErrorComingFromThisItem(t) ); } _shouldRestart() { if (this.crashes.length <= this._crashNumberLimit) { return true; } const t = this.crashes[this.crashes.length - 1].date; const e = this.crashes[this.crashes.length - 1 - this._crashNumberLimit].date; const n = (t - e) / this._crashNumberLimit; return n > this._minimumNonErrorTimePeriod; } } function NM(t, e = new Set()) { const n = [t]; const i = new Set(); let o = 0; while (n.length > o) { const t = n[o++]; if (i.has(t) || !zM(t) || e.has(t)) { continue; } i.add(t); if (Symbol.iterator in t) { try { for (const e of t) { n.push(e); } } catch (t) {} } else { for (const e in t) { if (e === "defaultValue") { continue; } n.push(t[e]); } } } return i; } function zM(t) { const e = Object.prototype.toString.call(t); const n = typeof t; return !( n === "number" || n === "boolean" || n === "string" || n === "symbol" || n === "function" || e === "[object Date]" || e === "[object RegExp]" || e === "[object Module]" || t === undefined || t === null || t._watchdogExcluded || t instanceof EventTarget || t instanceof Event ); } function PM(t, e, n = new Set()) { if (t === e && VM(t)) { return true; } const i = NM(t, n); const o = NM(e, n); for (const t of i) { if (o.has(t)) { return true; } } return false; } function RM(t, e, n) { const { subNodes: i, prevNodeMap: o } = getSubNodes(t, n.subNodes); const { subNodes: r, prevNodeMap: s } = getSubNodes(e, n.subNodes); for (const n of i) { if (r.has(n)) { const i = []; i.push(n); let r = o.get(n); while (r && r !== t) { i.push(r); r = o.get(r); } r = s.get(n); while (r && r !== e) { i.unshift(r); r = s.get(r); } console.log("--------"); console.log({ target1: t }); console.log({ sharedNode: n }); console.log({ target2: e }); console.log({ connection: i }); return true; } } return false; } function VM(t) { return typeof t === "object" && t !== null; } class OM extends LM { constructor(t, e = {}) { super(e); this._editor = null; this._lifecyclePromise = null; this._initUsingData = true; this._editables = {}; this._throttledSave = MS( this._save.bind(this), typeof e.saveInterval === "number" ? e.saveInterval : 5e3 ); if (t) { this._creator = (e, n) => t.create(e, n); } this._destructor = (t) => t.destroy(); } get editor() { return this._editor; } get _item() { return this._editor; } setCreator(t) { this._creator = t; } setDestructor(t) { this._destructor = t; } _restart() { return Promise.resolve() .then(() => { this.state = "initializing"; this._fire("stateChange"); return this._destroy(); }) .catch((t) => { console.error( "An error happened during the editor destroying.", t ); }) .then(() => { const t = {}; const e = []; const n = this._config.rootsAttributes || {}; const i = {}; for (const [o, r] of Object.entries(this._data.roots)) { if (r.isLoaded) { t[o] = ""; i[o] = n[o] || {}; } else { e.push(o); } } const o = { ...this._config, extraPlugins: this._config.extraPlugins || [], lazyRoots: e, rootsAttributes: i, _watchdogInitialData: this._data, }; delete o.initialData; o.extraPlugins.push(FM); if (this._initUsingData) { return this.create(t, o, o.context); } else { if ($a(this._elementOrData)) { return this.create(this._elementOrData, o, o.context); } else { return this.create(this._editables, o, o.context); } } }) .then(() => { this._fire("restart"); }); } create(t = this._elementOrData, e = this._config, n) { this._lifecyclePromise = Promise.resolve(this._lifecyclePromise) .then(() => { super._startErrorHandling(); this._elementOrData = t; this._initUsingData = typeof t == "string" || (Object.keys(t).length > 0 && typeof Object.values(t)[0] == "string"); this._config = this._cloneEditorConfiguration(e) || {}; this._config.context = n; return this._creator(t, this._config); }) .then((t) => { this._editor = t; t.model.document.on("change:data", this._throttledSave); this._lastDocumentVersion = t.model.document.version; this._data = this._getData(); if (!this._initUsingData) { this._editables = this._getEditables(); } this.state = "ready"; this._fire("stateChange"); }) .finally(() => { this._lifecyclePromise = null; }); return this._lifecyclePromise; } destroy() { this._lifecyclePromise = Promise.resolve(this._lifecyclePromise) .then(() => { this.state = "destroyed"; this._fire("stateChange"); super.destroy(); return this._destroy(); }) .finally(() => { this._lifecyclePromise = null; }); return this._lifecyclePromise; } _destroy() { return Promise.resolve().then(() => { this._stopErrorHandling(); this._throttledSave.cancel(); const t = this._editor; this._editor = null; t.model.document.off("change:data", this._throttledSave); return this._destructor(t); }); } _save() { const t = this._editor.model.document.version; try { this._data = this._getData(); if (!this._initUsingData) { this._editables = this._getEditables(); } this._lastDocumentVersion = t; } catch (t) { console.error( t, "An error happened during restoring editor data. " + "Editor will be restored from the previously saved data." ); } } _setExcludedProperties(t) { this._excludedProps = t; } _getData() { const t = this._editor; const e = t.model.document.roots.filter( (t) => t.isAttached() && t.rootName != "$graveyard" ); const { plugins: n } = t; const i = n.has("CommentsRepository") && n.get("CommentsRepository"); const o = n.has("TrackChanges") && n.get("TrackChanges"); const r = { roots: {}, markers: {}, commentThreads: JSON.stringify([]), suggestions: JSON.stringify([]), }; e.forEach((t) => { r.roots[t.rootName] = { content: JSON.stringify(Array.from(t.getChildren())), attributes: JSON.stringify(Array.from(t.getAttributes())), isLoaded: t._isLoaded, }; }); for (const e of t.model.markers) { if (!e._affectsData) { continue; } r.markers[e.name] = { rangeJSON: e.getRange().toJSON(), usingOperation: e._managedUsingOperations, affectsData: e._affectsData, }; } if (i) { r.commentThreads = JSON.stringify( i.getCommentThreads({ toJSON: true, skipNotAttached: true }) ); } if (o) { r.suggestions = JSON.stringify( o.getSuggestions({ toJSON: true, skipNotAttached: true }) ); } return r; } _getEditables() { const t = {}; for (const e of this.editor.model.document.getRootNames()) { const n = this.editor.ui.getEditableElement(e); if (n) { t[e] = n; } } return t; } _isErrorComingFromThisItem(t) { return PM(this._editor, t.context, this._excludedProps); } _cloneEditorConfiguration(t) { return Ha(t, (t, e) => { if ($a(t)) { return t; } if (e === "context") { return t; } }); } } class FM { constructor(t) { this.editor = t; this._data = t.config.get("_watchdogInitialData"); } init() { this.editor.data.on( "init", (t) => { t.stop(); this.editor.model.enqueueChange({ isUndoable: false }, (t) => { this._restoreCollaborationData(); this._restoreEditorData(t); }); this.editor.data.fire("ready"); }, { priority: 1e3 - 1 } ); } _createNode(t, e) { if ("name" in e) { const n = t.createElement(e.name, e.attributes); if (e.children) { for (const i of e.children) { n._appendChild(this._createNode(t, i)); } } return n; } else { return t.createText(e.data, e.attributes); } } _restoreEditorData(t) { const e = this.editor; Object.entries(this._data.roots).forEach( ([n, { content: i, attributes: o }]) => { const r = JSON.parse(i); const s = JSON.parse(o); const a = e.model.document.getRoot(n); for (const [e, n] of s) { t.setAttribute(e, n, a); } for (const e of r) { const n = this._createNode(t, e); t.insert(n, a, "end"); } } ); Object.entries(this._data.markers).forEach(([n, i]) => { const { document: o } = e.model; const { rangeJSON: { start: r, end: s }, ...a } = i; const c = o.getRoot(r.root); const l = t.createPositionFromPath(c, r.path, r.stickiness); const d = t.createPositionFromPath(c, s.path, s.stickiness); const u = t.createRange(l, d); t.addMarker(n, { range: u, ...a }); }); } _restoreCollaborationData() { const t = JSON.parse(this._data.commentThreads); const e = JSON.parse(this._data.suggestions); t.forEach((t) => { const e = this.editor.config.get("collaboration.channelId"); const n = this.editor.plugins.get("CommentsRepository"); if (n.hasCommentThread(t.threadId)) { const e = n.getCommentThread(t.threadId); e.remove(); } n.addCommentThread({ channelId: e, ...t }); }); e.forEach((t) => { const e = this.editor.plugins.get("TrackChangesEditing"); if (e.hasSuggestion(t.id)) { const n = e.getSuggestion(t.id); n.attributes = t.attributes; } else { e.addSuggestionData(t); } }); } } const jM = Symbol("MainQueueId"); class HM extends LM { constructor(t, e = {}) { super(e); this._watchdogs = new Map(); this._context = null; this._contextProps = new Set(); this._actionQueues = new UM(); this._watchdogConfig = e; this._creator = (e) => t.create(e); this._destructor = (t) => t.destroy(); this._actionQueues.onEmpty(() => { if (this.state === "initializing") { this.state = "ready"; this._fire("stateChange"); } }); } setCreator(t) { this._creator = t; } setDestructor(t) { this._destructor = t; } get context() { return this._context; } create(t = {}) { return this._actionQueues.enqueue(jM, () => { this._contextConfig = t; return this._create(); }); } getItem(t) { const e = this._getWatchdog(t); return e._item; } getItemState(t) { const e = this._getWatchdog(t); return e.state; } add(t) { const e = $M(t); return Promise.all( e.map((t) => this._actionQueues.enqueue(t.id, () => { if (this.state === "destroyed") { throw new Error("Cannot add items to destroyed watchdog."); } if (!this._context) { throw new Error( "Context was not created yet. You should call the `ContextWatchdog#create()` method first." ); } let e; if (this._watchdogs.has(t.id)) { throw new Error( `Item with the given id is already added: '${t.id}'.` ); } if (t.type === "editor") { e = new OM(null, this._watchdogConfig); e.setCreator(t.creator); e._setExcludedProperties(this._contextProps); if (t.destructor) { e.setDestructor(t.destructor); } this._watchdogs.set(t.id, e); e.on("error", (n, { error: i, causesRestart: o }) => { this._fire("itemError", { itemId: t.id, error: i }); if (!o) { return; } this._actionQueues.enqueue( t.id, () => new Promise((n) => { const i = () => { e.off("restart", i); this._fire("itemRestart", { itemId: t.id }); n(); }; e.on("restart", i); }) ); }); return e.create( t.sourceElementOrData, t.config, this._context ); } else { throw new Error(`Not supported item type: '${t.type}'.`); } }) ) ); } remove(t) { const e = $M(t); return Promise.all( e.map((t) => this._actionQueues.enqueue(t, () => { const e = this._getWatchdog(t); this._watchdogs.delete(t); return e.destroy(); }) ) ); } destroy() { return this._actionQueues.enqueue(jM, () => { this.state = "destroyed"; this._fire("stateChange"); super.destroy(); return this._destroy(); }); } _restart() { return this._actionQueues.enqueue(jM, () => { this.state = "initializing"; this._fire("stateChange"); return this._destroy() .catch((t) => { console.error( "An error happened during destroying the context or items.", t ); }) .then(() => this._create()) .then(() => this._fire("restart")); }); } _create() { return Promise.resolve() .then(() => { this._startErrorHandling(); return this._creator(this._contextConfig); }) .then((t) => { this._context = t; this._contextProps = NM(this._context); return Promise.all( Array.from(this._watchdogs.values()).map((t) => { t._setExcludedProperties(this._contextProps); return t.create(undefined, undefined, this._context); }) ); }); } _destroy() { return Promise.resolve().then(() => { this._stopErrorHandling(); const t = this._context; this._context = null; this._contextProps = new Set(); return Promise.all( Array.from(this._watchdogs.values()).map((t) => t.destroy()) ).then(() => this._destructor(t)); }); } _getWatchdog(t) { const e = this._watchdogs.get(t); if (!e) { throw new Error(`Item with the given id was not registered: ${t}.`); } return e; } _isErrorComingFromThisItem(t) { for (const e of this._watchdogs.values()) { if (e._isErrorComingFromThisItem(t)) { return false; } } return PM(this._context, t.context); } } class UM { constructor() { this._onEmptyCallbacks = []; this._queues = new Map(); this._activeActions = 0; } onEmpty(t) { this._onEmptyCallbacks.push(t); } enqueue(t, e) { const n = t === jM; this._activeActions++; if (!this._queues.get(t)) { this._queues.set(t, Promise.resolve()); } const i = n ? Promise.all(this._queues.values()) : Promise.all([this._queues.get(jM), this._queues.get(t)]); const o = i.then(e); const r = o.catch(() => {}); this._queues.set(t, r); return o.finally(() => { this._activeActions--; if (this._queues.get(t) === r && this._activeActions === 0) { this._onEmptyCallbacks.forEach((t) => t()); } }); } } function $M(t) { return Array.isArray(t) ? t : [t]; } class qM extends bC(fC) { constructor(t, e = {}) { if (!KM(t) && e.initialData !== undefined) { throw new N("editor-create-initial-data", null); } super(e); this.config.define("menuBar.isVisible", false); if (this.config.get("initialData") === undefined) { this.config.set("initialData", GM(t)); } if (KM(t)) { this.sourceElement = t; } this.model.document.createRoot(); const n = !this.config.get("toolbar.shouldNotGroupWhenFull"); const i = this.config.get("menuBar"); const o = new IM(this.locale, this.editing.view, { shouldToolbarGroupWhenFull: n, useMenuBar: i.isVisible, }); this.ui = new DM(this, o); pC(this); } destroy() { if (this.sourceElement) { this.updateSourceElement(); } this.ui.destroy(); return super.destroy(); } static create(t, e = {}) { return new Promise((n) => { const i = new this(t, e); n( i .initPlugins() .then(() => i.ui.init(KM(t) ? t : null)) .then(() => i.data.init(i.config.get("initialData"))) .then(() => i.fire("ready")) .then(() => i) ); }); } } qM.Context = mu; qM.EditorWatchdog = OM; qM.ContextWatchdog = HM; const WM = qM; function GM(t) { return KM(t) ? ic(t) : t; } function KM(t) { return $a(t); } const YM = ["left", "right", "center", "justify"]; function QM(t) { return YM.includes(t); } function ZM(t, e) { if (e.contentLanguageDirection == "rtl") { return t === "right"; } else { return t === "left"; } } function JM(t) { const e = t .map((t) => { let e; if (typeof t == "string") { e = { name: t }; } else { e = t; } return e; }) .filter((t) => { const e = YM.includes(t.name); if (!e) { z("alignment-config-name-not-recognized", { option: t }); } return e; }); const n = e.filter((t) => Boolean(t.className)).length; if (n && n < e.length) { throw new N("alignment-config-classnames-are-missing", { configuredOptions: t, }); } e.forEach((e, n, i) => { const o = i.slice(n + 1); const r = o.some((t) => t.name == e.name); if (r) { throw new N("alignment-config-name-already-defined", { option: e, configuredOptions: t, }); } if (e.className) { const n = o.some((t) => t.className == e.className); if (n) { throw new N("alignment-config-classname-already-defined", { option: e, configuredOptions: t, }); } } }); return e; } const XM = "alignment"; class tI extends lu { refresh() { const t = this.editor; const e = t.locale; const n = id( this.editor.model.document.selection.getSelectedBlocks() ); this.isEnabled = Boolean(n) && this._canBeAligned(n); if (this.isEnabled && n.hasAttribute("alignment")) { this.value = n.getAttribute("alignment"); } else { this.value = e.contentLanguageDirection === "rtl" ? "right" : "left"; } } execute(t = {}) { const e = this.editor; const n = e.locale; const i = e.model; const o = i.document; const r = t.value; i.change((t) => { const e = Array.from(o.selection.getSelectedBlocks()).filter((t) => this._canBeAligned(t) ); const i = e[0].getAttribute("alignment"); const s = ZM(r, n) || i === r || !r; if (s) { eI(e, t); } else { nI(e, t, r); } }); } _canBeAligned(t) { return this.editor.model.schema.checkAttribute(t, XM); } } function eI(t, e) { for (const n of t) { e.removeAttribute(XM, n); } } function nI(t, e, n) { for (const i of t) { e.setAttribute(XM, n, i); } } class iI extends au { static get pluginName() { return "AlignmentEditing"; } constructor(t) { super(t); t.config.define("alignment", { options: YM.map((t) => ({ name: t })), }); } init() { const t = this.editor; const e = t.locale; const n = t.model.schema; const i = JM(t.config.get("alignment.options")); const o = i.filter((t) => QM(t.name) && !ZM(t.name, e)); const r = o.some((t) => !!t.className); n.extend("$block", { allowAttributes: "alignment" }); t.model.schema.setAttributeProperties("alignment", { isFormatting: true, }); if (r) { t.conversion.attributeToAttribute(aI(o)); } else { t.conversion.for("downcast").attributeToAttribute(oI(o)); } const s = rI(o); for (const e of s) { t.conversion.for("upcast").attributeToAttribute(e); } const a = sI(o); for (const e of a) { t.conversion.for("upcast").attributeToAttribute(e); } t.commands.add("alignment", new tI(t)); } } function oI(t) { const e = {}; for (const { name: n } of t) { e[n] = { key: "style", value: { "text-align": n } }; } const n = { model: { key: "alignment", values: t.map((t) => t.name) }, view: e, }; return n; } function rI(t) { const e = []; for (const { name: n } of t) { e.push({ view: { key: "style", value: { "text-align": n } }, model: { key: "alignment", value: n }, }); } return e; } function sI(t) { const e = []; for (const { name: n } of t) { e.push({ view: { key: "align", value: n }, model: { key: "alignment", value: n }, }); } return e; } function aI(t) { const e = {}; for (const n of t) { e[n.name] = { key: "class", value: n.className }; } const n = { model: { key: "alignment", values: t.map((t) => t.name) }, view: e, }; return n; } const cI = new Map([ ["left", Bv.alignLeft], ["right", Bv.alignRight], ["center", Bv.alignCenter], ["justify", Bv.alignJustify], ]); class lI extends au { get localizedOptionTitles() { const t = this.editor.t; return { left: t("Align left"), right: t("Align right"), center: t("Align center"), justify: t("Justify"), }; } static get pluginName() { return "AlignmentUI"; } init() { const t = this.editor; const e = JM(t.config.get("alignment.options")); e.map((t) => t.name) .filter(QM) .forEach((t) => this._addButton(t)); this._addToolbarDropdown(e); this._addMenuBarMenu(e); } _addButton(t) { const e = this.editor; e.ui.componentFactory.add(`alignment:${t}`, (e) => this._createButton(e, t) ); } _createButton(t, e, n = {}) { const i = this.editor; const o = i.commands.get("alignment"); const r = new iy(t); r.set({ label: this.localizedOptionTitles[e], icon: cI.get(e), tooltip: true, isToggleable: true, ...n, }); r.bind("isEnabled").to(o); r.bind("isOn").to(o, "value", (t) => t === e); this.listenTo(r, "execute", () => { i.execute("alignment", { value: e }); i.editing.view.focus(); }); return r; } _addToolbarDropdown(t) { const e = this.editor; const n = e.ui.componentFactory; n.add("alignment", (n) => { const i = Zx(n); const o = n.uiLanguageDirection === "rtl" ? "w" : "e"; const r = n.t; Jx( i, () => t.map((t) => this._createButton(n, t.name, { tooltipPosition: o }) ), { enableActiveItemFocusOnDropdownOpen: true, isVertical: true, ariaLabel: r("Text alignment toolbar"), } ); i.buttonView.set({ label: r("Text alignment"), tooltip: true }); i.extendTemplate({ attributes: { class: "ck-alignment-dropdown" }, }); const s = n.contentLanguageDirection === "rtl" ? cI.get("right") : cI.get("left"); const a = e.commands.get("alignment"); i.buttonView.bind("icon").to(a, "value", (t) => cI.get(t) || s); i.bind("isEnabled").to(a, "isEnabled"); this.listenTo(i, "execute", () => { e.editing.view.focus(); }); return i; }); } _addMenuBarMenu(t) { const e = this.editor; e.ui.componentFactory.add("menuBar:alignment", (n) => { const i = e.commands.get("alignment"); const o = n.t; const r = new mM(n); const s = new gM(n); r.bind("isEnabled").to(i); s.set({ ariaLabel: o("Text alignment"), role: "menu" }); r.buttonView.set({ label: o("Text alignment") }); for (const o of t) { const t = new NB(n, r); const a = new wM(n); a.extendTemplate({ attributes: { "aria-checked": a.bindTemplate.to("isOn") }, }); a.delegate("execute").to(r); a.set({ label: this.localizedOptionTitles[o.name], icon: cI.get(o.name), }); a.on("execute", () => { e.execute("alignment", { value: o.name }); e.editing.view.focus(); }); a.bind("isOn").to(i, "value", (t) => t === o.name); a.bind("isEnabled").to(i, "isEnabled"); t.children.add(a); s.items.add(t); } r.panelView.children.add(s); return r; }); } } class dI extends au { static get requires() { return [iI, lI]; } static get pluginName() { return "Alignment"; } } class uI extends lu { constructor(t, e) { super(t); this.attributeKey = e; } refresh() { const t = this.editor.model; const e = t.document; this.value = this._getValueFromFirstAllowedNode(); this.isEnabled = t.schema.checkAttributeInSelection( e.selection, this.attributeKey ); } execute(t = {}) { const e = this.editor.model; const n = e.document; const i = n.selection; const o = t.forceValue === undefined ? !this.value : t.forceValue; e.change((t) => { if (i.isCollapsed) { if (o) { t.setSelectionAttribute(this.attributeKey, true); } else { t.removeSelectionAttribute(this.attributeKey); } } else { const n = e.schema.getValidRanges( i.getRanges(), this.attributeKey ); for (const e of n) { if (o) { t.setAttribute(this.attributeKey, o, e); } else { t.removeAttribute(this.attributeKey, e); } } } }); } _getValueFromFirstAllowedNode() { const t = this.editor.model; const e = t.schema; const n = t.document.selection; if (n.isCollapsed) { return n.hasAttribute(this.attributeKey); } for (const t of n.getRanges()) { for (const n of t.getItems()) { if (e.checkAttribute(n, this.attributeKey)) { return n.hasAttribute(this.attributeKey); } } } return false; } } const hI = "bold"; class mI extends au { static get pluginName() { return "BoldEditing"; } init() { const t = this.editor; const e = this.editor.t; t.model.schema.extend("$text", { allowAttributes: hI }); t.model.schema.setAttributeProperties(hI, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: hI, view: "strong", upcastAlso: [ "b", (t) => { const e = t.getStyle("font-weight"); if (!e) { return null; } if (e == "bold" || Number(e) >= 600) { return { name: true, styles: ["font-weight"] }; } return null; }, ], }); t.commands.add(hI, new uI(t, hI)); t.keystrokes.set("CTRL+B", hI); t.accessibility.addKeystrokeInfos({ keystrokes: [{ label: e("Bold text"), keystroke: "CTRL+B" }], }); } } function gI({ editor: t, commandName: e, plugin: n, icon: i, label: o, keystroke: r, }) { return (s) => { const a = t.commands.get(e); const c = new s(t.locale); c.set({ label: o, icon: i, keystroke: r, isToggleable: true }); c.bind("isEnabled").to(a, "isEnabled"); n.listenTo(c, "execute", () => { t.execute(e); t.editing.view.focus(); }); return c; }; } const fI = "bold"; class pI extends au { static get pluginName() { return "BoldUI"; } init() { const t = this.editor; const e = t.locale.t; const n = t.commands.get(fI); const i = gI({ editor: t, commandName: fI, plugin: this, icon: Bv.bold, label: e("Bold"), keystroke: "CTRL+B", }); t.ui.componentFactory.add(fI, () => { const t = i(iy); t.set({ tooltip: true }); t.bind("isOn").to(n, "value"); return t; }); t.ui.componentFactory.add("menuBar:" + fI, () => i(wM)); } } class kI extends au { static get requires() { return [mI, pI]; } static get pluginName() { return "Bold"; } } class bI { constructor(t, e = 20) { this._batch = null; this.model = t; this._size = 0; this.limit = e; this._isLocked = false; this._changeCallback = (t, e) => { if (e.isLocal && e.isUndoable && e !== this._batch) { this._reset(true); } }; this._selectionChangeCallback = () => { this._reset(); }; this.model.document.on("change", this._changeCallback); this.model.document.selection.on( "change:range", this._selectionChangeCallback ); this.model.document.selection.on( "change:attribute", this._selectionChangeCallback ); } get batch() { if (!this._batch) { this._batch = this.model.createBatch({ isTyping: true }); } return this._batch; } get size() { return this._size; } input(t) { this._size += t; if (this._size >= this.limit) { this._reset(true); } } get isLocked() { return this._isLocked; } lock() { this._isLocked = true; } unlock() { this._isLocked = false; } destroy() { this.model.document.off("change", this._changeCallback); this.model.document.selection.off( "change:range", this._selectionChangeCallback ); this.model.document.selection.off( "change:attribute", this._selectionChangeCallback ); } _reset(t = false) { if (!this.isLocked || t) { this._batch = null; this._size = 0; } } } class wI extends lu { constructor(t, e) { super(t); this._buffer = new bI(t.model, e); this._isEnabledBasedOnSelection = false; } get buffer() { return this._buffer; } destroy() { super.destroy(); this._buffer.destroy(); } execute(t = {}) { const e = this.editor.model; const n = e.document; const i = t.text || ""; const o = i.length; let r = n.selection; if (t.selection) { r = t.selection; } else if (t.range) { r = e.createSelection(t.range); } if (!e.canEditAt(r)) { return; } const s = t.resultRange; e.enqueueChange(this._buffer.batch, (t) => { this._buffer.lock(); const a = Array.from(n.selection.getAttributes()); e.deleteContent(r); if (i) { e.insertContent(t.createText(i, a), r); } if (s) { t.setSelection(s); } else if (!r.is("documentSelection")) { t.setSelection(r); } this._buffer.unlock(); this._buffer.input(o); }); } } const AI = ["insertText", "insertReplacementText"]; class _I extends Eg { constructor(t) { super(t); this.focusObserver = t.getObserver(ep); if (a.isAndroid) { AI.push("insertCompositionText"); } const e = t.document; e.on("beforeinput", (n, i) => { if (!this.isEnabled) { return; } const { data: o, targetRanges: r, inputType: s, domEvent: a } = i; if (!AI.includes(s)) { return; } this.focusObserver.flush(); const c = new D(e, "insertText"); e.fire( c, new Tg(t, a, { text: o, selection: t.createSelection(r) }) ); if (c.stop.called) { n.stop(); } }); e.on( "compositionend", (n, { data: i, domEvent: o }) => { if (!this.isEnabled || a.isAndroid) { return; } if (!i) { return; } e.fire( "insertText", new Tg(t, o, { text: i, selection: e.selection }) ); }, { priority: "lowest" } ); } observe() {} stopObserving() {} } class CI extends au { static get pluginName() { return "Input"; } init() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = e.document.selection; n.addObserver(_I); const o = new wI(t, t.config.get("typing.undoStep") || 20); t.commands.add("insertText", o); t.commands.add("input", o); this.listenTo(n.document, "insertText", (i, o) => { if (!n.document.isComposing) { o.preventDefault(); } const { text: r, selection: s, resultRange: c } = o; const l = Array.from(s.getRanges()).map((e) => t.editing.mapper.toModelRange(e) ); let d = r; if (a.isAndroid) { const t = Array.from(l[0].getItems()).reduce( (t, e) => t + (e.is("$textProxy") ? e.data : ""), "" ); if (t) { if (t.length <= d.length) { if (d.startsWith(t)) { d = d.substring(t.length); l[0].start = l[0].start.getShiftedBy(t.length); } } else { if (t.startsWith(d)) { l[0].start = l[0].start.getShiftedBy(d.length); d = ""; } } } } const u = { text: d, selection: e.createSelection(l) }; if (c) { u.resultRange = t.editing.mapper.toModelRange(c); } t.execute("insertText", u); n.scrollToTheSelection(); }); if (a.isAndroid) { this.listenTo(n.document, "keydown", (t, r) => { if ( i.isCollapsed || r.keyCode != 229 || !n.document.isComposing ) { return; } vI(e, o); }); } else { this.listenTo(n.document, "compositionstart", () => { if (i.isCollapsed) { return; } vI(e, o); }); } } } function vI(t, e) { if (!e.isEnabled) { return; } const n = e.buffer; n.lock(); t.enqueueChange(n.batch, () => { t.deleteContent(t.document.selection); }); n.unlock(); } class yI extends lu { constructor(t, e) { super(t); this.direction = e; this._buffer = new bI(t.model, t.config.get("typing.undoStep")); this._isEnabledBasedOnSelection = false; } get buffer() { return this._buffer; } execute(t = {}) { const e = this.editor.model; const n = e.document; e.enqueueChange(this._buffer.batch, (i) => { this._buffer.lock(); const o = i.createSelection(t.selection || n.selection); if (!e.canEditAt(o)) { return; } const r = t.sequence || 1; const s = o.isCollapsed; if (o.isCollapsed) { e.modifySelection(o, { direction: this.direction, unit: t.unit, treatEmojiAsSingleUnit: true, }); } if (this._shouldEntireContentBeReplacedWithParagraph(r)) { this._replaceEntireContentWithParagraph(i); return; } if (this._shouldReplaceFirstBlockWithParagraph(o, r)) { this.editor.execute("paragraph", { selection: o }); return; } if (o.isCollapsed) { return; } let a = 0; o.getFirstRange() .getMinimalFlatRanges() .forEach((t) => { a += xt( t.getWalker({ singleCharacters: true, ignoreElementEnd: true, shallow: true, }) ); }); e.deleteContent(o, { doNotResetEntireContent: s, direction: this.direction, }); this._buffer.input(a); i.setSelection(o); this._buffer.unlock(); }); } _shouldEntireContentBeReplacedWithParagraph(t) { if (t > 1) { return false; } const e = this.editor.model; const n = e.document; const i = n.selection; const o = e.schema.getLimitElement(i); const r = i.isCollapsed && i.containsEntireContent(o); if (!r) { return false; } if (!e.schema.checkChild(o, "paragraph")) { return false; } const s = o.getChild(0); if (s && s.is("element", "paragraph")) { return false; } return true; } _replaceEntireContentWithParagraph(t) { const e = this.editor.model; const n = e.document; const i = n.selection; const o = e.schema.getLimitElement(i); const r = t.createElement("paragraph"); t.remove(t.createRangeIn(o)); t.insert(r, o); t.setSelection(r, 0); } _shouldReplaceFirstBlockWithParagraph(t, e) { const n = this.editor.model; if (e > 1 || this.direction != "backward") { return false; } if (!t.isCollapsed) { return false; } const i = t.getFirstPosition(); const o = n.schema.getLimitElement(i); const r = o.getChild(0); if (i.parent != r) { return false; } if (!t.containsEntireContent(r)) { return false; } if (!n.schema.checkChild(o, "paragraph")) { return false; } if (r.name == "paragraph") { return false; } return true; } } const xI = "character"; const EI = "word"; const DI = "codePoint"; const SI = "selection"; const TI = "backward"; const BI = "forward"; const MI = { deleteContent: { unit: SI, direction: TI }, deleteContentBackward: { unit: DI, direction: TI }, deleteWordBackward: { unit: EI, direction: TI }, deleteHardLineBackward: { unit: SI, direction: TI }, deleteSoftLineBackward: { unit: SI, direction: TI }, deleteContentForward: { unit: xI, direction: BI }, deleteWordForward: { unit: EI, direction: BI }, deleteHardLineForward: { unit: SI, direction: BI }, deleteSoftLineForward: { unit: SI, direction: BI }, }; class II extends Eg { constructor(t) { super(t); const e = t.document; let n = 0; e.on("keydown", () => { n++; }); e.on("keyup", () => { n = 0; }); e.on("beforeinput", (i, o) => { if (!this.isEnabled) { return; } const { targetRanges: r, domEvent: s, inputType: c } = o; const l = MI[c]; if (!l) { return; } const d = { direction: l.direction, unit: l.unit, sequence: n }; if (d.unit == SI) { d.selectionToRemove = t.createSelection(r[0]); } if (c === "deleteContentBackward") { if (a.isAndroid) { d.sequence = 1; } if (NI(r)) { d.unit = SI; d.selectionToRemove = t.createSelection(r); } } const u = new cm(e, "delete", r[0]); e.fire(u, new Tg(t, s, d)); if (u.stop.called) { i.stop(); } }); if (a.isBlink) { LI(this); } } observe() {} stopObserving() {} } function LI(t) { const e = t.view; const n = e.document; let i = null; let o = false; n.on("keydown", (t, { keyCode: e }) => { i = e; o = false; }); n.on("keyup", (a, { keyCode: c, domEvent: l }) => { const d = n.selection; const u = t.isEnabled && c == i && r(c) && !d.isCollapsed && !o; i = null; if (u) { const t = d.getFirstRange(); const i = new cm(n, "delete", t); const o = { unit: SI, direction: s(c), selectionToRemove: d }; n.fire(i, new Tg(e, l, o)); } }); n.on( "beforeinput", (t, { inputType: e }) => { const n = MI[e]; const a = r(i) && n && n.direction == s(i); if (a) { o = true; } }, { priority: "high" } ); n.on( "beforeinput", (t, { inputType: e, data: n }) => { const o = i == Wc.delete && e == "insertText" && n == ""; if (o) { t.stop(); } }, { priority: "high" } ); function r(t) { return t == Wc.backspace || t == Wc.delete; } function s(t) { return t == Wc.backspace ? TI : BI; } } function NI(t) { if (t.length != 1 || t[0].isCollapsed) { return false; } const e = t[0].getWalker({ direction: "backward", singleCharacters: true, ignoreElementEnd: true, }); let n = 0; for (const { nextPosition: t, item: i } of e) { if (t.parent.is("$text")) { const e = t.parent.data; const i = t.offset; if (fd(e, i) || pd(e, i) || bd(e, i)) { continue; } n++; } else if (i.is("containerElement") || i.is("emptyElement")) { n++; } if (n > 1) { return true; } } return false; } class zI extends au { static get pluginName() { return "Delete"; } init() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = t.model.document; e.addObserver(II); this._undoOnBackspace = false; const o = new yI(t, "forward"); t.commands.add("deleteForward", o); t.commands.add("forwardDelete", o); t.commands.add("delete", new yI(t, "backward")); this.listenTo( n, "delete", (i, o) => { if (!n.isComposing) { o.preventDefault(); } const { direction: r, sequence: s, selectionToRemove: a, unit: c, } = o; const l = r === "forward" ? "deleteForward" : "delete"; const d = { sequence: s }; if (c == "selection") { const e = Array.from(a.getRanges()).map((e) => t.editing.mapper.toModelRange(e) ); d.selection = t.model.createSelection(e); } else { d.unit = c; } t.execute(l, d); e.scrollToTheSelection(); }, { priority: "low" } ); if (this.editor.plugins.has("UndoEditing")) { this.listenTo( n, "delete", (e, n) => { if ( this._undoOnBackspace && n.direction == "backward" && n.sequence == 1 && n.unit == "codePoint" ) { this._undoOnBackspace = false; t.execute("undo"); n.preventDefault(); e.stop(); } }, { context: "$capture" } ); this.listenTo(i, "change", () => { this._undoOnBackspace = false; }); } } requestUndoOnBackspace() { if (this.editor.plugins.has("UndoEditing")) { this._undoOnBackspace = true; } } } class PI extends au { static get requires() { return [CI, zI]; } static get pluginName() { return "Typing"; } } function RI(t, e) { let n = t.start; const i = Array.from(t.getWalker({ ignoreElementEnd: false })).reduce( (t, { item: i }) => { if (!(i.is("$text") || i.is("$textProxy"))) { n = e.createPositionAfter(i); return ""; } return t + i.data; }, "" ); return { text: i, range: e.createRange(n, t.end) }; } class VI extends mt() { constructor(t, e) { super(); this.model = t; this.testCallback = e; this._hasMatch = false; this.set("isEnabled", true); this.on("change:isEnabled", () => { if (this.isEnabled) { this._startListening(); } else { this.stopListening(t.document.selection); this.stopListening(t.document); } }); this._startListening(); } get hasMatch() { return this._hasMatch; } _startListening() { const t = this.model; const e = t.document; this.listenTo( e.selection, "change:range", (t, { directChange: n }) => { if (!n) { return; } if (!e.selection.isCollapsed) { if (this.hasMatch) { this.fire("unmatched"); this._hasMatch = false; } return; } this._evaluateTextBeforeSelection("selection"); } ); this.listenTo(e, "change:data", (t, e) => { if (e.isUndo || !e.isLocal) { return; } this._evaluateTextBeforeSelection("data", { batch: e }); }); } _evaluateTextBeforeSelection(t, e = {}) { const n = this.model; const i = n.document; const o = i.selection; const r = n.createRange( n.createPositionAt(o.focus.parent, 0), o.focus ); const { text: s, range: a } = RI(r, n); const c = this.testCallback(s); if (!c && this.hasMatch) { this.fire("unmatched"); } this._hasMatch = !!c; if (c) { const n = Object.assign(e, { text: s, range: a }); if (typeof c == "object") { Object.assign(n, c); } this.fire(`matched:${t}`, n); } } } class OI extends au { static get pluginName() { return "TwoStepCaretMovement"; } constructor(t) { super(t); this._isNextGravityRestorationSkipped = false; this.attributes = new Set(); this._overrideUid = null; } init() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = t.locale; const o = e.document.selection; this.listenTo( n.document, "arrowKey", (t, e) => { if (!o.isCollapsed) { return; } if (e.shiftKey || e.altKey || e.ctrlKey) { return; } const n = e.keyCode == Wc.arrowright; const r = e.keyCode == Wc.arrowleft; if (!n && !r) { return; } const s = i.contentLanguageDirection; let a = false; if ((s === "ltr" && n) || (s === "rtl" && r)) { a = this._handleForwardMovement(e); } else { a = this._handleBackwardMovement(e); } if (a === true) { t.stop(); } }, { context: "$text", priority: "highest" } ); this.listenTo(o, "change:range", (t, e) => { if (this._isNextGravityRestorationSkipped) { this._isNextGravityRestorationSkipped = false; return; } if (!this._isGravityOverridden) { return; } if (!e.directChange && qI(o.getFirstPosition(), this.attributes)) { return; } this._restoreGravity(); }); this._enableClickingAfterNode(); this._enableInsertContentSelectionAttributesFixer(); this._handleDeleteContentAfterNode(); } registerAttribute(t) { this.attributes.add(t); } _handleForwardMovement(t) { const e = this.attributes; const n = this.editor.model; const i = n.document.selection; const o = i.getFirstPosition(); if (this._isGravityOverridden) { return false; } if (o.isAtStart && FI(i, e)) { return false; } if (qI(o, e)) { UI(t); if (FI(i, e) && qI(o, e, true)) { HI(n, e); } else { this._overrideGravity(); } return true; } return false; } _handleBackwardMovement(t) { const e = this.attributes; const n = this.editor.model; const i = n.document.selection; const o = i.getFirstPosition(); if (this._isGravityOverridden) { UI(t); this._restoreGravity(); if (qI(o, e, true)) { HI(n, e); } else { jI(n, e, o); } return true; } else { if (o.isAtStart) { if (FI(i, e)) { UI(t); jI(n, e, o); return true; } return false; } if (!FI(i, e) && qI(o, e, true)) { UI(t); jI(n, e, o); return true; } if ($I(o, e)) { if (o.isAtEnd && !FI(i, e) && qI(o, e)) { UI(t); jI(n, e, o); return true; } this._isNextGravityRestorationSkipped = true; this._overrideGravity(); return false; } } return false; } _enableClickingAfterNode() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = t.editing.view.document; t.editing.view.addObserver(UA); let o = false; this.listenTo(i, "mousedown", () => { o = true; }); this.listenTo(i, "selectionChange", () => { const t = this.attributes; if (!o) { return; } o = false; if (!n.isCollapsed) { return; } if (!FI(n, t)) { return; } const i = n.getFirstPosition(); if (!qI(i, t)) { return; } if (i.isAtStart || qI(i, t, true)) { HI(e, t); } else if (!this._isGravityOverridden) { this._overrideGravity(); } }); } _enableInsertContentSelectionAttributesFixer() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = this.attributes; this.listenTo( e, "insertContent", () => { const t = n.getFirstPosition(); if (FI(n, i) && qI(t, i)) { HI(e, i); } }, { priority: "low" } ); } _handleDeleteContentAfterNode() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = t.editing.view; let o = false; let r = false; this.listenTo( i.document, "delete", (t, e) => { o = e.direction === "backward"; }, { priority: "high" } ); this.listenTo( e, "deleteContent", () => { if (!o) { return; } const t = n.getFirstPosition(); r = FI(n, this.attributes) && !$I(t, this.attributes); }, { priority: "high" } ); this.listenTo( e, "deleteContent", () => { if (!o) { return; } o = false; if (r) { return; } t.model.enqueueChange(() => { const t = n.getFirstPosition(); if (FI(n, this.attributes) && qI(t, this.attributes)) { if (t.isAtStart || qI(t, this.attributes, true)) { HI(e, this.attributes); } else if (!this._isGravityOverridden) { this._overrideGravity(); } } }); }, { priority: "low" } ); } get _isGravityOverridden() { return !!this._overrideUid; } _overrideGravity() { this._overrideUid = this.editor.model.change((t) => t.overrideSelectionGravity() ); } _restoreGravity() { this.editor.model.change((t) => { t.restoreSelectionGravity(this._overrideUid); this._overrideUid = null; }); } } function FI(t, e) { for (const n of e) { if (t.hasAttribute(n)) { return true; } } return false; } function jI(t, e, n) { const i = n.nodeBefore; t.change((n) => { if (i) { const e = []; const o = t.schema.isObject(i) && t.schema.isInline(i); for (const [n, r] of i.getAttributes()) { if ( t.schema.checkAttribute("$text", n) && (!o || t.schema.getAttributeProperties(n).copyFromObject !== false) ) { e.push([n, r]); } } n.setSelectionAttribute(e); } else { n.removeSelectionAttribute(e); } }); } function HI(t, e) { t.change((t) => { t.removeSelectionAttribute(e); }); } function UI(t) { t.preventDefault(); } function $I(t, e) { const n = t.getShiftedBy(-1); return qI(n, e); } function qI(t, e, n = false) { const { nodeBefore: i, nodeAfter: o } = t; for (const t of e) { const e = i ? i.getAttribute(t) : undefined; const r = o ? o.getAttribute(t) : undefined; if (n && (e === undefined || r === undefined)) { continue; } if (r !== e) { return true; } } return false; } const WI = { copyright: { from: "(c)", to: "©" }, registeredTrademark: { from: "(r)", to: "®" }, trademark: { from: "(tm)", to: "™" }, oneHalf: { from: /(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i, to: [null, "½", null], }, oneThird: { from: /(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i, to: [null, "⅓", null], }, twoThirds: { from: /(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i, to: [null, "⅔", null], }, oneForth: { from: /(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i, to: [null, "¼", null], }, threeQuarters: { from: /(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i, to: [null, "¾", null], }, lessThanOrEqual: { from: "<=", to: "≤" }, greaterThanOrEqual: { from: ">=", to: "≥" }, notEqual: { from: "!=", to: "≠" }, arrowLeft: { from: "<-", to: "←" }, arrowRight: { from: "->", to: "→" }, horizontalEllipsis: { from: "...", to: "…" }, enDash: { from: /(^| )(--)( )$/, to: [null, "–", null] }, emDash: { from: /(^| )(---)( )$/, to: [null, "—", null] }, quotesPrimary: { from: XI('"'), to: [null, "“", null, "”"] }, quotesSecondary: { from: XI("'"), to: [null, "‘", null, "’"] }, quotesPrimaryEnGb: { from: XI("'"), to: [null, "‘", null, "’"] }, quotesSecondaryEnGb: { from: XI('"'), to: [null, "“", null, "”"] }, quotesPrimaryPl: { from: XI('"'), to: [null, "„", null, "”"] }, quotesSecondaryPl: { from: XI("'"), to: [null, "‚", null, "’"] }, }; const GI = { symbols: ["copyright", "registeredTrademark", "trademark"], mathematical: [ "oneHalf", "oneThird", "twoThirds", "oneForth", "threeQuarters", "lessThanOrEqual", "greaterThanOrEqual", "notEqual", "arrowLeft", "arrowRight", ], typography: ["horizontalEllipsis", "enDash", "emDash"], quotes: ["quotesPrimary", "quotesSecondary"], }; const KI = ["symbols", "mathematical", "typography", "quotes"]; class YI extends au { static get requires() { return ["Delete", "Input"]; } static get pluginName() { return "TextTransformation"; } constructor(t) { super(t); t.config.define("typing", { transformations: { include: KI } }); } init() { const t = this.editor.model; const e = t.document.selection; e.on("change:range", () => { this.isEnabled = !e.anchor.parent.is("element", "codeBlock"); }); this._enableTransformationWatchers(); } _enableTransformationWatchers() { const t = this.editor; const e = t.model; const n = t.plugins.get("Delete"); const i = tL(t.config.get("typing.transformations")); const o = (t) => { for (const e of i) { const n = e.from; const i = n.test(t); if (i) { return { normalizedTransformation: e }; } } }; const r = new VI(t.model, o); r.on("matched:data", (t, i) => { if (!i.batch.isTyping) { return; } const { from: o, to: r } = i.normalizedTransformation; const s = o.exec(i.text); const a = r(s.slice(1)); const c = i.range; let l = s.index; e.enqueueChange((t) => { for (let n = 1; n < s.length; n++) { const i = s[n]; const o = a[n - 1]; if (o == null) { l += i.length; continue; } const r = c.start.getShiftedBy(l); const d = e.createRange(r, r.getShiftedBy(i.length)); const u = JI(r); e.insertContent(t.createText(o, u), d); l += o.length; } e.enqueueChange(() => { n.requestUndoOnBackspace(); }); }); }); r.bind("isEnabled").to(this); } } function QI(t) { if (typeof t == "string") { return new RegExp(`(${PT(t)})$`); } return t; } function ZI(t) { if (typeof t == "string") { return () => [t]; } else if (t instanceof Array) { return () => t; } return t; } function JI(t) { const e = t.textNode ? t.textNode : t.nodeAfter; return e.getAttributes(); } function XI(t) { return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`); } function tL(t) { const e = t.extra || []; const n = t.remove || []; const i = (t) => !n.includes(t); const o = t.include.concat(e).filter(i); return eL(o) .filter(i) .map((t) => (typeof t == "string" && WI[t] ? WI[t] : t)) .filter((t) => typeof t === "object") .map((t) => ({ from: QI(t.from), to: ZI(t.to) })); } function eL(t) { const e = new Set(); for (const n of t) { if (typeof n == "string" && GI[n]) { for (const t of GI[n]) { e.add(t); } } else { e.add(n); } } return Array.from(e); } function nL(t, e, n, i) { return i.createRange(iL(t, e, n, true, i), iL(t, e, n, false, i)); } function iL(t, e, n, i, o) { let r = t.textNode || (i ? t.nodeBefore : t.nodeAfter); let s = null; while (r && r.getAttribute(e) == n) { s = r; r = i ? r.previousSibling : r.nextSibling; } return s ? o.createPositionAt(s, i ? "before" : "after") : t; } function oL(t, e, n, i) { const o = t.editing.view; const r = new Set(); o.document.registerPostFixer((o) => { const s = t.model.document.selection; let a = false; if (s.hasAttribute(e)) { const c = nL(s.getFirstPosition(), e, s.getAttribute(e), t.model); const l = t.editing.mapper.toViewRange(c); for (const t of l.getItems()) { if (t.is("element", n) && !t.hasClass(i)) { o.addClass(i, t); r.add(t); a = true; } } } return a; }); t.conversion.for("editingDowncast").add((t) => { t.on("insert", e, { priority: "highest" }); t.on("remove", e, { priority: "highest" }); t.on("attribute", e, { priority: "highest" }); t.on("selection", e, { priority: "highest" }); function e() { o.change((t) => { for (const e of r.values()) { t.removeClass(i, e); r.delete(e); } }); } }); } const rL = "code"; const sL = "ck-code_selected"; class aL extends (null && Plugin) { static get pluginName() { return "CodeEditing"; } static get requires() { return [TwoStepCaretMovement]; } init() { const t = this.editor; const e = this.editor.t; t.model.schema.extend("$text", { allowAttributes: rL }); t.model.schema.setAttributeProperties(rL, { isFormatting: true, copyOnEnter: false, }); t.conversion.attributeToElement({ model: rL, view: "code", upcastAlso: { styles: { "word-wrap": "break-word" } }, }); t.commands.add(rL, new AttributeCommand(t, rL)); t.plugins.get(TwoStepCaretMovement).registerAttribute(rL); inlineHighlight(t, rL, "code", sL); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: e("Move out of an inline code style"), keystroke: [ ["arrowleft", "arrowleft"], ["arrowright", "arrowright"], ], }, ], }); } } var cL = n(2165); var lL = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; lL.insert = "head"; lL.singleton = true; var dL = Zd()(cL.A, lL); const uL = cL.A.locals || {}; const hL = "code"; class mL extends (null && Plugin) { static get pluginName() { return "CodeUI"; } init() { const t = this.editor; const e = t.locale.t; const n = getButtonCreator({ editor: t, commandName: hL, plugin: this, icon: codeIcon, label: e("Code"), }); t.ui.componentFactory.add(hL, () => { const e = n(ButtonView); const i = t.commands.get(hL); e.set({ tooltip: true }); e.bind("isOn").to(i, "value"); return e; }); t.ui.componentFactory.add("menuBar:" + hL, () => n(MenuBarMenuListItemButtonView) ); } } class gL extends (null && Plugin) { static get requires() { return [CodeEditing, CodeUI]; } static get pluginName() { return "Code"; } } const fL = "italic"; class pL extends au { static get pluginName() { return "ItalicEditing"; } init() { const t = this.editor; const e = this.editor.t; t.model.schema.extend("$text", { allowAttributes: fL }); t.model.schema.setAttributeProperties(fL, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: fL, view: "i", upcastAlso: ["em", { styles: { "font-style": "italic" } }], }); t.commands.add(fL, new uI(t, fL)); t.keystrokes.set("CTRL+I", fL); t.accessibility.addKeystrokeInfos({ keystrokes: [{ label: e("Italic text"), keystroke: "CTRL+I" }], }); } } const kL = ''; const bL = "italic"; class wL extends au { static get pluginName() { return "ItalicUI"; } init() { const t = this.editor; const e = t.commands.get(bL); const n = t.locale.t; const i = gI({ editor: t, commandName: bL, plugin: this, icon: kL, keystroke: "CTRL+I", label: n("Italic"), }); t.ui.componentFactory.add(bL, () => { const t = i(iy); t.set({ tooltip: true }); t.bind("isOn").to(e, "value"); return t; }); t.ui.componentFactory.add("menuBar:" + bL, () => i(wM)); } } class AL extends au { static get requires() { return [pL, wL]; } static get pluginName() { return "Italic"; } } const _L = "strikethrough"; class CL extends au { static get pluginName() { return "StrikethroughEditing"; } init() { const t = this.editor; const e = this.editor.t; t.model.schema.extend("$text", { allowAttributes: _L }); t.model.schema.setAttributeProperties(_L, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: _L, view: "s", upcastAlso: [ "del", "strike", { styles: { "text-decoration": "line-through" } }, ], }); t.commands.add(_L, new uI(t, _L)); t.keystrokes.set("CTRL+SHIFT+X", "strikethrough"); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: e("Strikethrough text"), keystroke: "CTRL+SHIFT+X" }, ], }); } } const vL = ''; const yL = "strikethrough"; class xL extends au { static get pluginName() { return "StrikethroughUI"; } init() { const t = this.editor; const e = t.locale.t; const n = gI({ editor: t, commandName: yL, plugin: this, icon: vL, keystroke: "CTRL+SHIFT+X", label: e("Strikethrough"), }); t.ui.componentFactory.add(yL, () => { const e = n(iy); const i = t.commands.get(yL); e.set({ tooltip: true }); e.bind("isOn").to(i, "value"); return e; }); t.ui.componentFactory.add("menuBar:" + yL, () => n(wM)); } } class EL extends au { static get requires() { return [CL, xL]; } static get pluginName() { return "Strikethrough"; } } const DL = "subscript"; class SL extends au { static get pluginName() { return "SubscriptEditing"; } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: DL }); t.model.schema.setAttributeProperties(DL, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: DL, view: "sub", upcastAlso: [{ styles: { "vertical-align": "sub" } }], }); t.commands.add(DL, new uI(t, DL)); } } const TL = ''; const BL = "subscript"; class ML extends au { static get pluginName() { return "SubscriptUI"; } init() { const t = this.editor; const e = t.locale.t; const n = gI({ editor: t, commandName: BL, plugin: this, icon: TL, label: e("Subscript"), }); t.ui.componentFactory.add(BL, () => { const e = n(iy); const i = t.commands.get(BL); e.set({ tooltip: true }); e.bind("isOn").to(i, "value"); return e; }); t.ui.componentFactory.add("menuBar:" + BL, () => n(wM)); } } class IL extends au { static get requires() { return [SL, ML]; } static get pluginName() { return "Subscript"; } } const LL = "superscript"; class NL extends au { static get pluginName() { return "SuperscriptEditing"; } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: LL }); t.model.schema.setAttributeProperties(LL, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: LL, view: "sup", upcastAlso: [{ styles: { "vertical-align": "super" } }], }); t.commands.add(LL, new uI(t, LL)); } } const zL = ''; const PL = "superscript"; class RL extends au { static get pluginName() { return "SuperscriptUI"; } init() { const t = this.editor; const e = t.locale.t; const n = gI({ editor: t, commandName: PL, plugin: this, icon: zL, label: e("Superscript"), }); t.ui.componentFactory.add(PL, () => { const e = n(iy); const i = t.commands.get(PL); e.set({ tooltip: true }); e.bind("isOn").to(i, "value"); return e; }); t.ui.componentFactory.add("menuBar:" + PL, () => n(wM)); } } class VL extends au { static get requires() { return [NL, RL]; } static get pluginName() { return "Superscript"; } } const OL = "underline"; class FL extends au { static get pluginName() { return "UnderlineEditing"; } init() { const t = this.editor; const e = this.editor.t; t.model.schema.extend("$text", { allowAttributes: OL }); t.model.schema.setAttributeProperties(OL, { isFormatting: true, copyOnEnter: true, }); t.conversion.attributeToElement({ model: OL, view: "u", upcastAlso: { styles: { "text-decoration": "underline" } }, }); t.commands.add(OL, new uI(t, OL)); t.keystrokes.set("CTRL+U", "underline"); t.accessibility.addKeystrokeInfos({ keystrokes: [{ label: e("Underline text"), keystroke: "CTRL+U" }], }); } } const jL = ''; const HL = "underline"; class UL extends au { static get pluginName() { return "UnderlineUI"; } init() { const t = this.editor; const e = t.commands.get(HL); const n = t.locale.t; const i = gI({ editor: t, commandName: HL, plugin: this, icon: jL, label: n("Underline"), keystroke: "CTRL+U", }); t.ui.componentFactory.add(HL, () => { const t = i(iy); t.set({ tooltip: true }); t.bind("isOn").to(e, "value"); return t; }); t.ui.componentFactory.add("menuBar:" + HL, () => i(wM)); } } class $L extends au { static get requires() { return [FL, UL]; } static get pluginName() { return "Underline"; } } function* qL(t, e) { for (const n of e) { if (n && t.getAttributeProperties(n[0]).copyOnEnter) { yield n; } } } class WL extends lu { execute() { this.editor.model.change((t) => { this.enterBlock(t); this.fire("afterExecute", { writer: t }); }); } enterBlock(t) { const e = this.editor.model; const n = e.document.selection; const i = e.schema; const o = n.isCollapsed; const r = n.getFirstRange(); const s = r.start.parent; const a = r.end.parent; if (i.isLimit(s) || i.isLimit(a)) { if (!o && s == a) { e.deleteContent(n); } return false; } if (o) { const e = qL(t.model.schema, n.getAttributes()); GL(t, r.start); t.setSelectionAttribute(e); return true; } else { const i = !(r.start.isAtStart && r.end.isAtEnd); const o = s == a; e.deleteContent(n, { leaveUnmerged: i }); if (i) { if (o) { GL(t, n.focus); return true; } else { t.setSelection(a, 0); } } } return false; } } function GL(t, e) { t.split(e); t.setSelection(e.parent.nextSibling, 0); } const KL = { insertParagraph: { isSoft: false }, insertLineBreak: { isSoft: true }, }; class YL extends Eg { constructor(t) { super(t); const e = this.document; let n = false; e.on("keydown", (t, e) => { n = e.shiftKey; }); e.on("beforeinput", (i, o) => { if (!this.isEnabled) { return; } let r = o.inputType; if (a.isSafari && n && r == "insertParagraph") { r = "insertLineBreak"; } const s = o.domEvent; const c = KL[r]; if (!c) { return; } const l = new cm(e, "enter", o.targetRanges[0]); e.fire(l, new Tg(t, s, { isSoft: c.isSoft })); if (l.stop.called) { i.stop(); } }); } observe() {} stopObserving() {} } class QL extends au { static get pluginName() { return "Enter"; } init() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = this.editor.t; e.addObserver(YL); t.commands.add("enter", new WL(t)); this.listenTo( n, "enter", (i, o) => { if (!n.isComposing) { o.preventDefault(); } if (o.isSoft) { return; } t.execute("enter"); e.scrollToTheSelection(); }, { priority: "low" } ); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: i("Insert a hard break (a new paragraph)"), keystroke: "Enter", }, ], }); } } class ZL extends lu { execute() { const t = this.editor.model; const e = t.document; t.change((n) => { XL(t, n, e.selection); this.fire("afterExecute", { writer: n }); }); } refresh() { const t = this.editor.model; const e = t.document; this.isEnabled = JL(t.schema, e.selection); } } function JL(t, e) { if (e.rangeCount > 1) { return false; } const n = e.anchor; if (!n || !t.checkChild(n, "softBreak")) { return false; } const i = e.getFirstRange(); const o = i.start.parent; const r = i.end.parent; if ((eN(o, t) || eN(r, t)) && o !== r) { return false; } return true; } function XL(t, e, n) { const i = n.isCollapsed; const o = n.getFirstRange(); const r = o.start.parent; const s = o.end.parent; const a = r == s; if (i) { const i = qL(t.schema, n.getAttributes()); tN(t, e, o.end); e.removeSelectionAttribute(n.getAttributeKeys()); e.setSelectionAttribute(i); } else { const i = !(o.start.isAtStart && o.end.isAtEnd); t.deleteContent(n, { leaveUnmerged: i }); if (a) { tN(t, e, n.focus); } else { if (i) { e.setSelection(s, 0); } } } } function tN(t, e, n) { const i = e.createElement("softBreak"); t.insertContent(i, n); e.setSelection(i, "after"); } function eN(t, e) { if (t.is("rootElement")) { return false; } return e.isLimit(t) || eN(t.parent, e); } class nN extends au { static get pluginName() { return "ShiftEnter"; } init() { const t = this.editor; const e = t.model.schema; const n = t.conversion; const i = t.editing.view; const o = i.document; const r = this.editor.t; e.register("softBreak", { allowWhere: "$text", isInline: true }); n.for("upcast").elementToElement({ model: "softBreak", view: "br" }); n.for("downcast").elementToElement({ model: "softBreak", view: (t, { writer: e }) => e.createEmptyElement("br"), }); i.addObserver(YL); t.commands.add("shiftEnter", new ZL(t)); this.listenTo( o, "enter", (e, n) => { if (!o.isComposing) { n.preventDefault(); } if (!n.isSoft) { return; } t.execute("shiftEnter"); i.scrollToTheSelection(); }, { priority: "low" } ); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: r( "Insert a soft break (a <br> element)" ), keystroke: "Shift+Enter", }, ], }); } } class iN extends lu { refresh() { this.value = this._getValue(); this.isEnabled = this._checkEnabled(); } execute(t = {}) { const e = this.editor.model; const n = e.schema; const i = e.document.selection; const o = Array.from(i.getSelectedBlocks()); const r = t.forceValue === undefined ? !this.value : t.forceValue; e.change((t) => { if (!r) { this._removeQuote(t, o.filter(oN)); } else { const e = o.filter((t) => oN(t) || sN(n, t)); this._applyQuote(t, e); } }); } _getValue() { const t = this.editor.model.document.selection; const e = id(t.getSelectedBlocks()); return !!(e && oN(e)); } _checkEnabled() { if (this.value) { return true; } const t = this.editor.model.document.selection; const e = this.editor.model.schema; const n = id(t.getSelectedBlocks()); if (!n) { return false; } return sN(e, n); } _removeQuote(t, e) { rN(t, e) .reverse() .forEach((e) => { if (e.start.isAtStart && e.end.isAtEnd) { t.unwrap(e.start.parent); return; } if (e.start.isAtStart) { const n = t.createPositionBefore(e.start.parent); t.move(e, n); return; } if (!e.end.isAtEnd) { t.split(e.end); } const n = t.createPositionAfter(e.end.parent); t.move(e, n); }); } _applyQuote(t, e) { const n = []; rN(t, e) .reverse() .forEach((e) => { let i = oN(e.start); if (!i) { i = t.createElement("blockQuote"); t.wrap(e, i); } n.push(i); }); n.reverse().reduce((e, n) => { if (e.nextSibling == n) { t.merge(t.createPositionAfter(e)); return e; } return n; }); } } function oN(t) { return t.parent.name == "blockQuote" ? t.parent : null; } function rN(t, e) { let n; let i = 0; const o = []; while (i < e.length) { const r = e[i]; const s = e[i + 1]; if (!n) { n = t.createPositionBefore(r); } if (!s || r.nextSibling != s) { o.push(t.createRange(n, t.createPositionAfter(r))); n = null; } i++; } return o; } function sN(t, e) { const n = t.checkChild(e.parent, "blockQuote"); const i = t.checkChild(["$root", "blockQuote"], e); return n && i; } class aN extends au { static get pluginName() { return "BlockQuoteEditing"; } static get requires() { return [QL, zI]; } init() { const t = this.editor; const e = t.model.schema; t.commands.add("blockQuote", new iN(t)); e.register("blockQuote", { inheritAllFrom: "$container" }); t.conversion.elementToElement({ model: "blockQuote", view: "blockquote", }); t.model.document.registerPostFixer((n) => { const i = t.model.document.differ.getChanges(); for (const t of i) { if (t.type == "insert") { const i = t.position.nodeAfter; if (!i) { continue; } if (i.is("element", "blockQuote") && i.isEmpty) { n.remove(i); return true; } else if ( i.is("element", "blockQuote") && !e.checkChild(t.position, i) ) { n.unwrap(i); return true; } else if (i.is("element")) { const t = n.createRangeIn(i); for (const i of t.getItems()) { if ( i.is("element", "blockQuote") && !e.checkChild(n.createPositionBefore(i), i) ) { n.unwrap(i); return true; } } } } else if (t.type == "remove") { const e = t.position.parent; if (e.is("element", "blockQuote") && e.isEmpty) { n.remove(e); return true; } } } return false; }); const n = this.editor.editing.view.document; const i = t.model.document.selection; const o = t.commands.get("blockQuote"); this.listenTo( n, "enter", (e, n) => { if (!i.isCollapsed || !o.value) { return; } const r = i.getLastPosition().parent; if (r.isEmpty) { t.execute("blockQuote"); t.editing.view.scrollToTheSelection(); n.preventDefault(); e.stop(); } }, { context: "blockquote" } ); this.listenTo( n, "delete", (e, n) => { if (n.direction != "backward" || !i.isCollapsed || !o.value) { return; } const r = i.getLastPosition().parent; if (r.isEmpty && !r.previousSibling) { t.execute("blockQuote"); t.editing.view.scrollToTheSelection(); n.preventDefault(); e.stop(); } }, { context: "blockquote" } ); } } var cN = n(9394); var lN = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; lN.insert = "head"; lN.singleton = true; var dN = Zd()(cN.A, lN); const uN = cN.A.locals || {}; class hN extends au { static get pluginName() { return "BlockQuoteUI"; } init() { const t = this.editor; const e = t.commands.get("blockQuote"); t.ui.componentFactory.add("blockQuote", () => { const t = this._createButton(iy); t.set({ tooltip: true }); t.bind("isOn").to(e, "value"); return t; }); t.ui.componentFactory.add("menuBar:blockQuote", () => this._createButton(wM) ); } _createButton(t) { const e = this.editor; const n = e.locale; const i = e.commands.get("blockQuote"); const o = new t(e.locale); const r = n.t; o.set({ label: r("Block quote"), icon: Bv.quote, isToggleable: true, }); o.bind("isEnabled").to(i, "isEnabled"); this.listenTo(o, "execute", () => { e.execute("blockQuote"); e.editing.view.focus(); }); return o; } } class mN extends au { static get requires() { return [aN, hN]; } static get pluginName() { return "BlockQuote"; } } class gN extends Bg { constructor(t) { super(t); this.domEventType = [ "paste", "copy", "cut", "drop", "dragover", "dragstart", "dragend", "dragenter", "dragleave", ]; const e = this.document; this.listenTo(e, "paste", n("clipboardInput"), { priority: "low" }); this.listenTo(e, "drop", n("clipboardInput"), { priority: "low" }); this.listenTo(e, "dragover", n("dragging"), { priority: "low" }); function n(t) { return (n, i) => { i.preventDefault(); const o = i.dropRange ? [i.dropRange] : null; const r = new D(e, t); e.fire(r, { dataTransfer: i.dataTransfer, method: n.name, targetRanges: o, target: i.target, domEvent: i.domEvent, }); if (r.stop.called) { i.stopPropagation(); } }; } } onDomEvent(t) { const e = "clipboardData" in t ? t.clipboardData : t.dataTransfer; const n = t.type == "drop" || t.type == "paste"; const i = { dataTransfer: new op(e, { cacheFiles: n }) }; if (t.type == "drop" || t.type == "dragover") { i.dropRange = fN(this.view, t); } this.fire(t.type, t, i); } } function fN(t, e) { const n = e.target.ownerDocument; const i = e.clientX; const o = e.clientY; let r; if (n.caretRangeFromPoint && n.caretRangeFromPoint(i, o)) { r = n.caretRangeFromPoint(i, o); } else if (e.rangeParent) { r = n.createRange(); r.setStart(e.rangeParent, e.rangeOffset); r.collapse(true); } if (r) { return t.domConverter.domRangeToView(r); } return null; } function pN(t) { t = t .replace(/&/g, "&") .replace(//g, ">") .replace(/\r?\n\r?\n/g, "

") .replace(/\r?\n/g, "
") .replace(/\t/g, "    ") .replace(/^\s/, " ") .replace(/\s$/, " ") .replace(/\s\s/g, "  "); if (t.includes("

") || t.includes("
")) { t = `

${t}

`; } return t; } function kN(t) { return t .replace( /(\s+)<\/span>/g, (t, e) => { if (e.length == 1) { return " "; } return e; } ) .replace(//g, ""); } const bN = ["figcaption", "li"]; const wN = ["ol", "ul"]; function AN(t) { if (t.is("$text") || t.is("$textProxy")) { return t.data; } if (t.is("element", "img") && t.hasAttribute("alt")) { return t.getAttribute("alt"); } if (t.is("element", "br")) { return "\n"; } let e = ""; let n = null; for (const i of t.getChildren()) { e += _N(i, n) + AN(i); n = i; } return e; } function _N(t, e) { if (!e) { return ""; } if ( t.is("element", "li") && !t.isEmpty && t.getChild(0).is("containerElement") ) { return "\n\n"; } if (wN.includes(t.name) && wN.includes(e.name)) { return "\n\n"; } if (!t.is("containerElement") && !e.is("containerElement")) { return ""; } if (bN.includes(t.name) || bN.includes(e.name)) { return "\n"; } return "\n\n"; } function CN(t, e) { return t && ul(t, e, qo); } const vN = CN; var yN = 1, xN = 2; function EN(t, e, n, i) { var o = n.length, r = o, s = !i; if (t == null) { return !r; } t = Object(t); while (o--) { var a = n[o]; if (s && a[2] ? a[1] !== t[a[0]] : !(a[0] in t)) { return false; } } while (++o < r) { a = n[o]; var c = a[0], l = t[c], d = a[1]; if (s && a[2]) { if (l === undefined && !(c in t)) { return false; } } else { var u = new ri(); if (i) { var h = i(l, d, c, t, e, u); } if (!(h === undefined ? Qf(d, l, yN | xN, i, u) : h)) { return false; } } } return true; } const DN = EN; function SN(t) { return t === t && !st(t); } const TN = SN; function BN(t) { var e = qo(t), n = e.length; while (n--) { var i = e[n], o = t[i]; e[n] = [i, o, TN(o)]; } return e; } const MN = BN; function IN(t, e) { return function (n) { if (n == null) { return false; } return n[t] === e && (e !== undefined || t in Object(n)); }; } const LN = IN; function NN(t) { var e = MN(t); if (e.length == 1 && e[0][2]) { return LN(e[0][0], e[0][1]); } return function (n) { return n === t || DN(n, t, e); }; } const zN = NN; function PN(t, e) { return t != null && e in Object(t); } const RN = PN; function VN(t, e, n) { e = Ah(e, t); var i = -1, o = e.length, r = false; while (++i < o) { var s = xh(e[i]); if (!(r = t != null && n(t, s))) { break; } t = t[s]; } if (r || ++i != o) { return r; } o = t == null ? 0 : t.length; return !!o && Ui(o) && Fi(s, o) && (Zt(t) || Di(t)); } const ON = VN; function FN(t, e) { return t != null && ON(t, e, RN); } const jN = FN; var HN = 1, UN = 2; function $N(t, e) { if (Xu(t) && TN(e)) { return LN(xh(t), e); } return function (n) { var i = Rh(n, t); return i === undefined && i === e ? jN(n, t) : Qf(e, i, HN | UN); }; } const qN = $N; function WN(t) { return function (e) { return e == null ? undefined : e[t]; }; } const GN = WN; function KN(t) { return function (e) { return Dh(e, t); }; } const YN = KN; function QN(t) { return Xu(t) ? GN(xh(t)) : YN(t); } const ZN = QN; function JN(t) { if (typeof t == "function") { return t; } if (t == null) { return vl; } if (typeof t == "object") { return Zt(t) ? qN(t[0], t[1]) : zN(t); } return ZN(t); } const XN = JN; function tz(t, e) { var n = {}; e = XN(e, 3); vN(t, function (t, i, o) { ui(n, i, e(t, i, o)); }); return n; } const ez = tz; class nz extends au { constructor() { super(...arguments); this._markersToCopy = new Map(); } static get pluginName() { return "ClipboardMarkersUtils"; } _registerMarkerToCopy(t, e) { this._markersToCopy.set(t, e); } _copySelectedFragmentWithMarkers( t, e, n = (t) => t.model.getSelectedContent(t.model.document.selection) ) { return this.editor.model.change((i) => { const o = i.model.document.selection; i.setSelection(e); const r = this._insertFakeMarkersIntoSelection( i, i.model.document.selection, t ); const s = n(i); const a = this._removeFakeMarkersInsideElement(i, s); for (const [t, e] of Object.entries(r)) { a[t] || (a[t] = i.createRangeIn(s)); for (const t of e) { i.remove(t); } } s.markers.clear(); for (const [t, e] of Object.entries(a)) { s.markers.set(t, e); } i.setSelection(o); return s; }); } _pasteMarkersIntoTransformedElement(t, e) { const n = this._getPasteMarkersFromRangeMap(t); return this.editor.model.change((t) => { const i = this._insertFakeMarkersElements(t, n); const o = e(t); const r = this._removeFakeMarkersInsideElement(t, o); for (const e of Object.values(i).flat()) { t.remove(e); } for (const [e, n] of Object.entries(r)) { if (!t.model.markers.has(e)) { t.addMarker(e, { usingOperation: true, affectsData: true, range: n, }); } } return o; }); } _pasteFragmentWithMarkers(t) { const e = this._getPasteMarkersFromRangeMap(t.markers); t.markers.clear(); for (const n of e) { t.markers.set(n.name, n.range); } return this.editor.model.insertContent(t); } _forceMarkersCopy( t, e, n = { allowedActions: "all", copyPartiallySelected: true, duplicateOnPaste: true, } ) { const i = this._markersToCopy.get(t); this._markersToCopy.set(t, n); e(); if (i) { this._markersToCopy.set(t, i); } else { this._markersToCopy.delete(t); } } _isMarkerCopyable(t, e) { const n = this._getMarkerClipboardConfig(t); if (!n) { return false; } if (!e) { return true; } const { allowedActions: i } = n; return i === "all" || i.includes(e); } _hasMarkerConfiguration(t) { return !!this._getMarkerClipboardConfig(t); } _getMarkerClipboardConfig(t) { const [e] = t.split(":"); return this._markersToCopy.get(e) || null; } _insertFakeMarkersIntoSelection(t, e, n) { const i = this._getCopyableMarkersFromSelection(t, e, n); return this._insertFakeMarkersElements(t, i); } _getCopyableMarkersFromSelection(t, e, n) { const i = Array.from(e.getRanges()); const o = new Set( i.flatMap((e) => Array.from(t.model.markers.getMarkersIntersectingRange(e)) ) ); const r = (t) => { const e = this._isMarkerCopyable(t.name, n); if (!e) { return false; } const { copyPartiallySelected: o } = this._getMarkerClipboardConfig( t.name ); if (!o) { const e = t.getRange(); return i.some((t) => t.containsRange(e, true)); } return true; }; return Array.from(o) .filter(r) .map((t) => { const e = n === "dragstart" ? this._getUniqueMarkerName(t.name) : t.name; return { name: e, range: t.getRange() }; }); } _getPasteMarkersFromRangeMap(t, e = null) { const { model: n } = this.editor; const i = t instanceof Map ? Array.from(t.entries()) : Object.entries(t); return i.flatMap(([t, i]) => { if (!this._hasMarkerConfiguration(t)) { return [{ name: t, range: i }]; } if (this._isMarkerCopyable(t, e)) { const e = this._getMarkerClipboardConfig(t); const o = n.markers.has(t) && n.markers.get(t).getRange().root.rootName === "$graveyard"; if (e.duplicateOnPaste || o) { t = this._getUniqueMarkerName(t); } return [{ name: t, range: i }]; } return []; }); } _insertFakeMarkersElements(t, e) { const n = {}; const i = e .flatMap((t) => { const { start: e, end: n } = t.range; return [ { position: e, marker: t, type: "start" }, { position: n, marker: t, type: "end" }, ]; }) .sort(({ position: t }, { position: e }) => t.isBefore(e) ? 1 : -1 ); for (const { position: e, marker: o, type: r } of i) { const i = t.createElement("$marker", { "data-name": o.name, "data-type": r, }); if (!n[o.name]) { n[o.name] = []; } n[o.name].push(i); t.insert(i, e); } return n; } _removeFakeMarkersInsideElement(t, e) { const n = this._getAllFakeMarkersFromElement(t, e); const i = n.reduce((e, n) => { const i = n.markerElement && t.createPositionBefore(n.markerElement); let o = e[n.name]; let r = false; if (o && o.start && o.end) { const t = this._getMarkerClipboardConfig(n.name); if (t.duplicateOnPaste) { e[this._getUniqueMarkerName(n.name)] = e[n.name]; } else { r = true; } o = null; } if (!r) { e[n.name] = { ...o, [n.type]: i }; } if (n.markerElement) { t.remove(n.markerElement); } return e; }, {}); return ez( i, (n) => new Bp( n.start || t.createPositionFromPath(e, [0]), n.end || t.createPositionAt(e, "end") ) ); } _getAllFakeMarkersFromElement(t, e) { const n = Array.from(t.createRangeIn(e)).flatMap(({ item: t }) => { if (!t.is("element", "$marker")) { return []; } const e = t.getAttribute("data-name"); const n = t.getAttribute("data-type"); return [{ markerElement: t, name: e, type: n }]; }); const i = []; const o = []; for (const t of n) { if (t.type === "end") { const e = n.some((e) => e.name === t.name && e.type === "start"); if (!e) { i.push({ markerElement: null, name: t.name, type: "start" }); } } if (t.type === "start") { const e = n.some((e) => e.name === t.name && e.type === "end"); if (!e) { o.unshift({ markerElement: null, name: t.name, type: "end" }); } } } return [...i, ...n, ...o]; } _getUniqueMarkerName(t) { const e = t.split(":"); const n = T().substring(1, 6); if (e.length === 3) { return `${e.slice(0, 2).join(":")}:${n}`; } return `${e.join(":")}:${n}`; } } class iz extends au { static get pluginName() { return "ClipboardPipeline"; } static get requires() { return [nz]; } init() { const t = this.editor; const e = t.editing.view; e.addObserver(gN); this._setupPasteDrop(); this._setupCopyCut(); } _fireOutputTransformationEvent(t, e, n) { const i = this.editor.plugins.get("ClipboardMarkersUtils"); this.editor.model.enqueueChange({ isUndoable: n === "cut" }, () => { const o = i._copySelectedFragmentWithMarkers(n, e); this.fire("outputTransformation", { dataTransfer: t, content: o, method: n, }); }); } _setupPasteDrop() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = n.document; const o = this.editor.plugins.get("ClipboardMarkersUtils"); this.listenTo( i, "clipboardInput", (e, n) => { if ( n.method == "paste" && !t.model.canEditAt(t.model.document.selection) ) { e.stop(); } }, { priority: "highest" } ); this.listenTo( i, "clipboardInput", (t, e) => { const i = e.dataTransfer; let o; if (e.content) { o = e.content; } else { let t = ""; if (i.getData("text/html")) { t = kN(i.getData("text/html")); } else if (i.getData("text/plain")) { t = pN(i.getData("text/plain")); } o = this.editor.data.htmlProcessor.toView(t); } const r = new D(this, "inputTransformation"); this.fire(r, { content: o, dataTransfer: i, targetRanges: e.targetRanges, method: e.method, }); if (r.stop.called) { t.stop(); } n.scrollToTheSelection(); }, { priority: "low" } ); this.listenTo( this, "inputTransformation", (t, n) => { if (n.content.isEmpty) { return; } const i = this.editor.data; const o = i.toModel(n.content, "$clipboardHolder"); if (o.childCount == 0) { return; } t.stop(); e.change(() => { this.fire("contentInsertion", { content: o, method: n.method, dataTransfer: n.dataTransfer, targetRanges: n.targetRanges, }); }); }, { priority: "low" } ); this.listenTo( this, "contentInsertion", (t, e) => { e.resultRange = o._pasteFragmentWithMarkers(e.content); }, { priority: "low" } ); } _setupCopyCut() { const t = this.editor; const e = t.model.document; const n = t.editing.view; const i = n.document; const o = (t, n) => { const i = n.dataTransfer; n.preventDefault(); this._fireOutputTransformationEvent(i, e.selection, t.name); }; this.listenTo(i, "copy", o, { priority: "low" }); this.listenTo( i, "cut", (e, n) => { if (!t.model.canEditAt(t.model.document.selection)) { n.preventDefault(); } else { o(e, n); } }, { priority: "low" } ); this.listenTo( this, "outputTransformation", (e, n) => { const o = t.data.toView(n.content); i.fire("clipboardOutput", { dataTransfer: n.dataTransfer, content: o, method: n.method, }); }, { priority: "low" } ); this.listenTo( i, "clipboardOutput", (n, i) => { if (!i.content.isEmpty) { i.dataTransfer.setData( "text/html", this.editor.data.htmlProcessor.toData(i.content) ); i.dataTransfer.setData("text/plain", AN(i.content)); } if (i.method == "cut") { t.model.deleteContent(e.selection); } }, { priority: "low" } ); } } class oz extends G() { constructor() { super(...arguments); this._stack = []; } add(t, e) { const n = this._stack; const i = n[0]; this._insertDescriptor(t); const o = n[0]; if (i !== o && !rz(i, o)) { this.fire("change:top", { oldDescriptor: i, newDescriptor: o, writer: e, }); } } remove(t, e) { const n = this._stack; const i = n[0]; this._removeDescriptor(t); const o = n[0]; if (i !== o && !rz(i, o)) { this.fire("change:top", { oldDescriptor: i, newDescriptor: o, writer: e, }); } } _insertDescriptor(t) { const e = this._stack; const n = e.findIndex((e) => e.id === t.id); if (rz(t, e[n])) { return; } if (n > -1) { e.splice(n, 1); } let i = 0; while (e[i] && sz(e[i], t)) { i++; } e.splice(i, 0, t); } _removeDescriptor(t) { const e = this._stack; const n = e.findIndex((e) => e.id === t); if (n > -1) { e.splice(n, 1); } } } function rz(t, e) { return ( t && e && t.priority == e.priority && az(t.classes) == az(e.classes) ); } function sz(t, e) { if (t.priority > e.priority) { return true; } else if (t.priority < e.priority) { return false; } return az(t.classes) > az(e.classes); } function az(t) { return Array.isArray(t) ? t.sort().join(",") : t; } const cz = ''; const lz = "ck-widget"; const dz = "ck-widget_selected"; function uz(t) { if (!t.is("element")) { return false; } return !!t.getCustomProperty("widget"); } function hz(t, e, n = {}) { if (!t.is("containerElement")) { throw new N("widget-to-widget-wrong-element-type", null, { element: t, }); } e.setAttribute("contenteditable", "false", t); e.addClass(lz, t); e.setCustomProperty("widget", true, t); t.getFillerOffset = _z; e.setCustomProperty("widgetLabel", [], t); if (n.label) { pz(t, n.label); } if (n.hasSelectionHandle) { Cz(t, e); } fz(t, e); return t; } function mz(t, e, n) { if (e.classes) { n.addClass(rl(e.classes), t); } if (e.attributes) { for (const i in e.attributes) { n.setAttribute(i, e.attributes[i], t); } } } function gz(t, e, n) { if (e.classes) { n.removeClass(rl(e.classes), t); } if (e.attributes) { for (const i in e.attributes) { n.removeAttribute(i, t); } } } function fz(t, e, n = mz, i = gz) { const o = new oz(); o.on("change:top", (e, o) => { if (o.oldDescriptor) { i(t, o.oldDescriptor, o.writer); } if (o.newDescriptor) { n(t, o.newDescriptor, o.writer); } }); const r = (t, e, n) => o.add(e, n); const s = (t, e, n) => o.remove(e, n); e.setCustomProperty("addHighlight", r, t); e.setCustomProperty("removeHighlight", s, t); } function pz(t, e) { const n = t.getCustomProperty("widgetLabel"); n.push(e); } function kz(t) { const e = t.getCustomProperty("widgetLabel"); return e.reduce((t, e) => { if (typeof e === "function") { return t ? t + ". " + e() : e(); } else { return t ? t + ". " + e : e; } }, ""); } function bz(t, e, n = {}) { e.addClass(["ck-editor__editable", "ck-editor__nested-editable"], t); e.setAttribute("role", "textbox", t); e.setAttribute("tabindex", "-1", t); if (n.label) { e.setAttribute("aria-label", n.label, t); } e.setAttribute("contenteditable", t.isReadOnly ? "false" : "true", t); t.on("change:isReadOnly", (n, i, o) => { e.setAttribute("contenteditable", o ? "false" : "true", t); }); t.on("change:isFocused", (n, i, o) => { if (o) { e.addClass("ck-editor__nested-editable_focused", t); } else { e.removeClass("ck-editor__nested-editable_focused", t); } }); fz(t, e); return t; } function wz(t, e) { const n = t.getSelectedElement(); if (n) { const i = Bz(t); if (i) { return e.createRange(e.createPositionAt(n, i)); } } return e.schema.findOptimalInsertionRange(t); } function Az(t, e) { return (n, i) => { const { mapper: o, viewPosition: r } = i; const s = o.findMappedViewAncestor(r); if (!e(s)) { return; } const a = o.toModelElement(s); i.modelPosition = t.createPositionAt( a, r.isAtStart ? "before" : "after" ); }; } function _z() { return null; } function Cz(t, e) { const n = e.createUIElement( "div", { class: "ck ck-widget__selection-handle" }, function (t) { const e = this.toDomElement(t); const n = new Zv(); n.set("content", cz); n.render(); e.appendChild(n.element); return e; } ); e.insert(e.createPositionAt(t, 0), n); e.addClass(["ck-widget_with-selection-handle"], t); } function vz(t) { const e = (t) => { const { width: e, paddingLeft: n, paddingRight: i, } = t.ownerDocument.defaultView.getComputedStyle(t); return parseFloat(e) - (parseFloat(n) || 0) - (parseFloat(i) || 0); }; const n = t.parentElement; if (!n) { return 0; } let i = e(n); const o = 5; let r = 0; let s = n; while (isNaN(i)) { s = s.parentElement; if (++r > o) { return 0; } i = e(s); } return i; } function yz(t, e = new lc(t)) { const n = vz(t); if (!n) { return 0; } return (e.width / n) * 100; } const xz = "widget-type-around"; function Ez(t, e, n) { return !!t && uz(t) && !n.isInline(e); } function Dz(t) { return t.closest(".ck-widget__type-around__button"); } function Sz(t) { return t.classList.contains("ck-widget__type-around__button_before") ? "before" : "after"; } function Tz(t, e) { const n = t.closest(".ck-widget"); return e.mapDomToView(n); } function Bz(t) { return t.getAttribute(xz); } const Mz = ''; var Iz = n(698); var Lz = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Lz.insert = "head"; Lz.singleton = true; var Nz = Zd()(Iz.A, Lz); const zz = Iz.A.locals || {}; const Pz = ["before", "after"]; const Rz = new DOMParser().parseFromString( Mz, "image/svg+xml" ).firstChild; const Vz = "ck-widget__type-around_disabled"; class Oz extends au { constructor() { super(...arguments); this._currentFakeCaretModelElement = null; } static get pluginName() { return "WidgetTypeAround"; } static get requires() { return [QL, zI]; } init() { const t = this.editor; const e = t.editing.view; this.on("change:isEnabled", (n, i, o) => { e.change((t) => { for (const n of e.document.roots) { if (o) { t.removeClass(Vz, n); } else { t.addClass(Vz, n); } } }); if (!o) { t.model.change((t) => { t.removeSelectionAttribute(xz); }); } }); this._enableTypeAroundUIInjection(); this._enableInsertingParagraphsOnButtonClick(); this._enableInsertingParagraphsOnEnterKeypress(); this._enableInsertingParagraphsOnTypingKeystroke(); this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(); this._enableDeleteIntegration(); this._enableInsertContentIntegration(); this._enableInsertObjectIntegration(); this._enableDeleteContentIntegration(); } destroy() { super.destroy(); this._currentFakeCaretModelElement = null; } _insertParagraph(t, e) { const n = this.editor; const i = n.editing.view; const o = n.model.schema.getAttributesWithProperty( t, "copyOnReplace", true ); n.execute("insertParagraph", { position: n.model.createPositionAt(t, e), attributes: o, }); i.focus(); i.scrollToTheSelection(); } _listenToIfEnabled(t, e, n, i) { this.listenTo( t, e, (...t) => { if (this.isEnabled) { n(...t); } }, i ); } _insertParagraphAccordingToFakeCaretPosition() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = Bz(n); if (!i) { return false; } const o = n.getSelectedElement(); this._insertParagraph(o, i); return true; } _enableTypeAroundUIInjection() { const t = this.editor; const e = t.model.schema; const n = t.locale.t; const i = { before: n("Insert paragraph before block"), after: n("Insert paragraph after block"), }; t.editing.downcastDispatcher.on( "insert", (t, o, r) => { const s = r.mapper.toViewElement(o.item); if (!s) { return; } if (Ez(s, o.item, e)) { Fz(r.writer, i, s); const t = s.getCustomProperty("widgetLabel"); t.push(() => this.isEnabled ? n( "Press Enter to type after or press Shift + Enter to type before the widget" ) : "" ); } }, { priority: "low" } ); } _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = e.schema; const o = t.editing.view; this._listenToIfEnabled( o.document, "arrowKey", (t, e) => { this._handleArrowKeyPress(t, e); }, { context: [uz, "$text"], priority: "high" } ); this._listenToIfEnabled(n, "change:range", (e, n) => { if (!n.directChange) { return; } t.model.change((t) => { t.removeSelectionAttribute(xz); }); }); this._listenToIfEnabled(e.document, "change:data", () => { const e = n.getSelectedElement(); if (e) { const n = t.editing.mapper.toViewElement(e); if (Ez(n, e, i)) { return; } } t.model.change((t) => { t.removeSelectionAttribute(xz); }); }); this._listenToIfEnabled( t.editing.downcastDispatcher, "selection", (t, e, n) => { const o = n.writer; if (this._currentFakeCaretModelElement) { const t = n.mapper.toViewElement( this._currentFakeCaretModelElement ); if (t) { o.removeClass(Pz.map(r), t); this._currentFakeCaretModelElement = null; } } const s = e.selection.getSelectedElement(); if (!s) { return; } const a = n.mapper.toViewElement(s); if (!Ez(a, s, i)) { return; } const c = Bz(e.selection); if (!c) { return; } o.addClass(r(c), a); this._currentFakeCaretModelElement = s; } ); this._listenToIfEnabled( t.ui.focusTracker, "change:isFocused", (e, n, i) => { if (!i) { t.model.change((t) => { t.removeSelectionAttribute(xz); }); } } ); function r(t) { return `ck-widget_type-around_show-fake-caret_${t}`; } } _handleArrowKeyPress(t, e) { const n = this.editor; const i = n.model; const o = i.document.selection; const r = i.schema; const s = n.editing.view; const a = e.keyCode; const c = tl(a, n.locale.contentLanguageDirection); const l = s.document.selection.getSelectedElement(); const d = n.editing.mapper.toModelElement(l); let u; if (Ez(l, d, r)) { u = this._handleArrowKeyPressOnSelectedWidget(c); } else if (o.isCollapsed) { u = this._handleArrowKeyPressWhenSelectionNextToAWidget(c); } else if (!e.shiftKey) { u = this._handleArrowKeyPressWhenNonCollapsedSelection(c); } if (u) { e.preventDefault(); t.stop(); } } _handleArrowKeyPressOnSelectedWidget(t) { const e = this.editor; const n = e.model; const i = n.document.selection; const o = Bz(i); return n.change((e) => { if (o) { const n = o === (t ? "after" : "before"); if (!n) { e.removeSelectionAttribute(xz); return true; } } else { e.setSelectionAttribute(xz, t ? "after" : "before"); return true; } return false; }); } _handleArrowKeyPressWhenSelectionNextToAWidget(t) { const e = this.editor; const n = e.model; const i = n.schema; const o = e.plugins.get("Widget"); const r = o._getObjectElementNextToSelection(t); const s = e.editing.mapper.toViewElement(r); if (Ez(s, r, i)) { n.change((e) => { o._setSelectionOverElement(r); e.setSelectionAttribute(xz, t ? "before" : "after"); }); return true; } return false; } _handleArrowKeyPressWhenNonCollapsedSelection(t) { const e = this.editor; const n = e.model; const i = n.schema; const o = e.editing.mapper; const r = n.document.selection; const s = t ? r.getLastPosition().nodeBefore : r.getFirstPosition().nodeAfter; const a = o.toViewElement(s); if (Ez(a, s, i)) { n.change((e) => { e.setSelection(s, "on"); e.setSelectionAttribute(xz, t ? "after" : "before"); }); return true; } return false; } _enableInsertingParagraphsOnButtonClick() { const t = this.editor; const e = t.editing.view; this._listenToIfEnabled(e.document, "mousedown", (n, i) => { const o = Dz(i.domTarget); if (!o) { return; } const r = Sz(o); const s = Tz(o, e.domConverter); const a = t.editing.mapper.toModelElement(s); this._insertParagraph(a, r); i.preventDefault(); n.stop(); }); } _enableInsertingParagraphsOnEnterKeypress() { const t = this.editor; const e = t.model.document.selection; const n = t.editing.view; this._listenToIfEnabled( n.document, "enter", (n, i) => { if (n.eventPhase != "atTarget") { return; } const o = e.getSelectedElement(); const r = t.editing.mapper.toViewElement(o); const s = t.model.schema; let a; if (this._insertParagraphAccordingToFakeCaretPosition()) { a = true; } else if (Ez(r, o, s)) { this._insertParagraph(o, i.isSoft ? "before" : "after"); a = true; } if (a) { i.preventDefault(); n.stop(); } }, { context: uz } ); } _enableInsertingParagraphsOnTypingKeystroke() { const t = this.editor; const e = t.editing.view.document; this._listenToIfEnabled( e, "insertText", (t, n) => { if (this._insertParagraphAccordingToFakeCaretPosition()) { n.selection = e.selection; } }, { priority: "high" } ); if (a.isAndroid) { this._listenToIfEnabled(e, "keydown", (t, e) => { if (e.keyCode == 229) { this._insertParagraphAccordingToFakeCaretPosition(); } }); } else { this._listenToIfEnabled( e, "compositionstart", () => { this._insertParagraphAccordingToFakeCaretPosition(); }, { priority: "high" } ); } } _enableDeleteIntegration() { const t = this.editor; const e = t.editing.view; const n = t.model; const i = n.schema; this._listenToIfEnabled( e.document, "delete", (e, o) => { if (e.eventPhase != "atTarget") { return; } const r = Bz(n.document.selection); if (!r) { return; } const s = o.direction; const a = n.document.selection.getSelectedElement(); const c = r === "before"; const l = s == "forward"; const d = c === l; if (d) { t.execute("delete", { selection: n.createSelection(a, "on") }); } else { const e = i.getNearestSelectionRange( n.createPositionAt(a, r), s ); if (e) { if (!e.isCollapsed) { n.change((n) => { n.setSelection(e); t.execute(l ? "deleteForward" : "delete"); }); } else { const o = n.createSelection(e.start); n.modifySelection(o, { direction: s }); if (!o.focus.isEqual(e.start)) { n.change((n) => { n.setSelection(e); t.execute(l ? "deleteForward" : "delete"); }); } else { const t = Uz(i, e.start.parent); n.deleteContent(n.createSelection(t, "on"), { doNotAutoparagraph: true, }); } } } } o.preventDefault(); e.stop(); }, { context: uz } ); } _enableInsertContentIntegration() { const t = this.editor; const e = this.editor.model; const n = e.document.selection; this._listenToIfEnabled( t.model, "insertContent", (t, [i, o]) => { if (o && !o.is("documentSelection")) { return; } const r = Bz(n); if (!r) { return; } t.stop(); return e.change((t) => { const o = n.getSelectedElement(); const s = e.createPositionAt(o, r); const a = t.createSelection(s); const c = e.insertContent(i, a); t.setSelection(a); return c; }); }, { priority: "high" } ); } _enableInsertObjectIntegration() { const t = this.editor; const e = this.editor.model; const n = e.document.selection; this._listenToIfEnabled( t.model, "insertObject", (t, e) => { const [, i, o = {}] = e; if (i && !i.is("documentSelection")) { return; } const r = Bz(n); if (!r) { return; } o.findOptimalPosition = r; e[3] = o; }, { priority: "high" } ); } _enableDeleteContentIntegration() { const t = this.editor; const e = this.editor.model; const n = e.document.selection; this._listenToIfEnabled( t.model, "deleteContent", (t, [e]) => { if (e && !e.is("documentSelection")) { return; } const i = Bz(n); if (i) { t.stop(); } }, { priority: "high" } ); } } function Fz(t, e, n) { const i = t.createUIElement( "div", { class: "ck ck-reset_all ck-widget__type-around" }, function (t) { const n = this.toDomElement(t); jz(n, e); Hz(n); return n; } ); t.insert(t.createPositionAt(n, "end"), i); } function jz(t, e) { for (const n of Pz) { const i = new vd({ tag: "div", attributes: { class: [ "ck", "ck-widget__type-around__button", `ck-widget__type-around__button_${n}`, ], title: e[n], "aria-hidden": "true", }, children: [t.ownerDocument.importNode(Rz, true)], }); t.appendChild(i.render()); } } function Hz(t) { const e = new vd({ tag: "div", attributes: { class: ["ck", "ck-widget__type-around__fake-caret"] }, }); t.appendChild(e.render()); } function Uz(t, e) { let n = e; for (const i of e.getAncestors({ parentFirst: true })) { if (i.childCount > 1 || t.isLimit(i)) { break; } n = i; } return n; } function $z(t) { const e = t.model; return (n, i) => { const o = i.keyCode == Wc.arrowup; const r = i.keyCode == Wc.arrowdown; const s = i.shiftKey; const a = e.document.selection; if (!o && !r) { return; } const c = r; if (s && Yz(a, c)) { return; } const l = qz(t, a, c); if (!l) { return; } if (l.isCollapsed) { if (a.isCollapsed) { return; } else if (s) { return; } } if (l.isCollapsed || Kz(t, l, c)) { e.change((t) => { const n = c ? l.end : l.start; if (s) { const i = e.createSelection(a.anchor); i.setFocus(n); t.setSelection(i); } else { t.setSelection(n); } }); n.stop(); i.preventDefault(); i.stopPropagation(); } }; } function qz(t, e, n) { const i = t.model; if (n) { const t = e.isCollapsed ? e.focus : e.getLastPosition(); const n = Wz(i, t, "forward"); if (!n) { return null; } const o = i.createRange(t, n); const r = Gz(i.schema, o, "backward"); if (r) { return i.createRange(t, r); } return null; } else { const t = e.isCollapsed ? e.focus : e.getFirstPosition(); const n = Wz(i, t, "backward"); if (!n) { return null; } const o = i.createRange(n, t); const r = Gz(i.schema, o, "forward"); if (r) { return i.createRange(r, t); } return null; } } function Wz(t, e, n) { const i = t.schema; const o = t.createRangeIn(e.root); const r = n == "forward" ? "elementStart" : "elementEnd"; for (const { previousPosition: t, item: s, type: a } of o.getWalker({ startPosition: e, direction: n, })) { if (i.isLimit(s) && !i.isInline(s)) { return t; } if (a == r && i.isBlock(s)) { return null; } } return null; } function Gz(t, e, n) { const i = n == "backward" ? e.end : e.start; if (t.checkChild(i, "$text")) { return i; } for (const { nextPosition: i } of e.getWalker({ direction: n })) { if (t.checkChild(i, "$text")) { return i; } } return null; } function Kz(t, e, n) { const i = t.model; const o = t.view.domConverter; if (n) { const t = i.createSelection(e.start); i.modifySelection(t); if (!t.focus.isAtEnd && !e.start.isEqual(t.focus)) { e = i.createRange(t.focus, e.end); } } const r = t.mapper.toViewRange(e); const s = o.viewRangeToDom(r); const a = lc.getDomRangeRects(s); let c; for (const t of a) { if (c === undefined) { c = Math.round(t.bottom); continue; } if (Math.round(t.top) >= c) { return false; } c = Math.max(c, Math.round(t.bottom)); } return true; } function Yz(t, e) { return !t.isCollapsed && t.isBackward == e; } var Qz = n(1089); var Zz = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Zz.insert = "head"; Zz.singleton = true; var Jz = Zd()(Qz.A, Zz); const Xz = Qz.A.locals || {}; class tP extends au { constructor() { super(...arguments); this._previouslySelected = new Set(); } static get pluginName() { return "Widget"; } static get requires() { return [Oz, zI]; } init() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = t.t; this.editor.editing.downcastDispatcher.on("selection", (e, n, i) => { const o = i.writer; const r = n.selection; if (r.isCollapsed) { return; } const s = r.getSelectedElement(); if (!s) { return; } const a = t.editing.mapper.toViewElement(s); if (!uz(a)) { return; } if (!i.consumable.consume(r, "selection")) { return; } o.setSelection(o.createRangeOn(a), { fake: true, label: kz(a) }); }); this.editor.editing.downcastDispatcher.on( "selection", (t, e, n) => { this._clearPreviouslySelectedWidgets(n.writer); const i = n.writer; const o = i.document.selection; let r = null; for (const t of o.getRanges()) { for (const e of t) { const t = e.item; if (uz(t) && !nP(t, r)) { i.addClass(dz, t); this._previouslySelected.add(t); r = t; } } } }, { priority: "low" } ); e.addObserver(UA); this.listenTo(n, "mousedown", (...t) => this._onMousedown(...t)); this.listenTo( n, "arrowKey", (...t) => { this._handleSelectionChangeOnArrowKeyPress(...t); }, { context: [uz, "$text"] } ); this.listenTo( n, "arrowKey", (...t) => { this._preventDefaultOnArrowKeyPress(...t); }, { context: "$root" } ); this.listenTo(n, "arrowKey", $z(this.editor.editing), { context: "$text", }); this.listenTo( n, "delete", (t, e) => { if (this._handleDelete(e.direction == "forward")) { e.preventDefault(); t.stop(); } }, { context: "$root" } ); this.listenTo( n, "tab", (t, e) => { if (t.eventPhase != "atTarget") { return; } if (e.shiftKey) { return; } if (this._selectFirstNestedEditable()) { e.preventDefault(); t.stop(); } }, { context: uz, priority: "low" } ); this.listenTo( n, "tab", (t, e) => { if (!e.shiftKey) { return; } if (this._selectAncestorWidget()) { e.preventDefault(); t.stop(); } }, { priority: "low" } ); this.listenTo( n, "keydown", (t, e) => { if (e.keystroke != Wc.esc) { return; } if (this._selectAncestorWidget()) { e.preventDefault(); t.stop(); } }, { priority: "low" } ); t.accessibility.addKeystrokeInfoGroup({ id: "widget", label: i( "Keystrokes that can be used when a widget is selected (for example: image, table, etc.)" ), keystrokes: [ { label: i("Insert a new paragraph directly after a widget"), keystroke: "Enter", }, { label: i("Insert a new paragraph directly before a widget"), keystroke: "Shift+Enter", }, { label: i( "Move the caret to allow typing directly before a widget" ), keystroke: [["arrowup"], ["arrowleft"]], }, { label: i( "Move the caret to allow typing directly after a widget" ), keystroke: [["arrowdown"], ["arrowright"]], }, ], }); } _onMousedown(t, e) { const n = this.editor; const i = n.editing.view; const o = i.document; let r = e.target; if (e.domEvent.detail >= 3) { if (this._selectBlockContent(r)) { e.preventDefault(); } return; } if (eP(r)) { return; } if (!uz(r)) { r = r.findAncestor(uz); if (!r) { return; } } if (a.isAndroid) { e.preventDefault(); } if (!o.isFocused) { i.focus(); } const s = n.editing.mapper.toModelElement(r); this._setSelectionOverElement(s); } _selectBlockContent(t) { const e = this.editor; const n = e.model; const i = e.editing.mapper; const o = n.schema; const r = i.findMappedViewAncestor( this.editor.editing.view.createPositionAt(t, 0) ); const s = iP(i.toModelElement(r), n.schema); if (!s) { return false; } n.change((t) => { const e = !o.isLimit(s) ? oP(t.createPositionAfter(s), o) : null; const n = t.createPositionAt(s, 0); const i = e ? t.createPositionAt(e, 0) : t.createPositionAt(s, "end"); t.setSelection(t.createRange(n, i)); }); return true; } _handleSelectionChangeOnArrowKeyPress(t, e) { const n = e.keyCode; const i = this.editor.model; const o = i.schema; const r = i.document.selection; const s = r.getSelectedElement(); const a = Jc(n, this.editor.locale.contentLanguageDirection); const c = a == "down" || a == "right"; const l = a == "up" || a == "down"; if (s && o.isObject(s)) { const n = c ? r.getLastPosition() : r.getFirstPosition(); const s = o.getNearestSelectionRange(n, c ? "forward" : "backward"); if (s) { i.change((t) => { t.setSelection(s); }); e.preventDefault(); t.stop(); } return; } if (!r.isCollapsed && !e.shiftKey) { const n = r.getFirstPosition(); const s = r.getLastPosition(); const a = n.nodeAfter; const l = s.nodeBefore; if ((a && o.isObject(a)) || (l && o.isObject(l))) { i.change((t) => { t.setSelection(c ? s : n); }); e.preventDefault(); t.stop(); } return; } if (!r.isCollapsed) { return; } const d = this._getObjectElementNextToSelection(c); if (d && o.isObject(d)) { if (o.isInline(d) && l) { return; } this._setSelectionOverElement(d); e.preventDefault(); t.stop(); } } _preventDefaultOnArrowKeyPress(t, e) { const n = this.editor.model; const i = n.schema; const o = n.document.selection.getSelectedElement(); if (o && i.isObject(o)) { e.preventDefault(); t.stop(); } } _handleDelete(t) { const e = this.editor.model.document; const n = e.selection; if (!this.editor.model.canEditAt(n)) { return; } if (!n.isCollapsed) { return; } const i = this._getObjectElementNextToSelection(t); if (i) { this.editor.model.change((t) => { let e = n.anchor.parent; while (e.isEmpty) { const n = e; e = n.parent; t.remove(n); } this._setSelectionOverElement(i); }); return true; } } _setSelectionOverElement(t) { this.editor.model.change((e) => { e.setSelection(e.createRangeOn(t)); }); } _getObjectElementNextToSelection(t) { const e = this.editor.model; const n = e.schema; const i = e.document.selection; const o = e.createSelection(i); e.modifySelection(o, { direction: t ? "forward" : "backward" }); if (o.isEqual(i)) { return null; } const r = t ? o.focus.nodeBefore : o.focus.nodeAfter; if (!!r && n.isObject(r)) { return r; } return null; } _clearPreviouslySelectedWidgets(t) { for (const e of this._previouslySelected) { t.removeClass(dz, e); } this._previouslySelected.clear(); } _selectFirstNestedEditable() { const t = this.editor; const e = this.editor.editing.view; const n = e.document; for (const e of n.selection.getFirstRange().getItems()) { if (e.is("editableElement")) { const n = t.editing.mapper.toModelElement(e); if (!n) { continue; } const i = t.model.createPositionAt(n, 0); const o = t.model.schema.getNearestSelectionRange(i, "forward"); t.model.change((t) => { t.setSelection(o); }); return true; } } return false; } _selectAncestorWidget() { const t = this.editor; const e = t.editing.mapper; const n = t.editing.view.document.selection; const i = n.getFirstPosition().parent; const o = i.is("$text") ? i.parent : i; const r = o.findAncestor(uz); if (!r) { return false; } const s = e.toModelElement(r); if (!s) { return false; } t.model.change((t) => { t.setSelection(s, "on"); }); return true; } } function eP(t) { let e = t; while (e) { if (e.is("editableElement") && !e.is("rootElement")) { return true; } if (uz(e)) { return false; } e = e.parent; } return false; } function nP(t, e) { if (!e) { return false; } return Array.from(t.getAncestors()).includes(e); } function iP(t, e) { for (const n of t.getAncestors({ includeSelf: true, parentFirst: true, })) { if (e.checkChild(n, "$text")) { return n; } if (e.isLimit(n) && !e.isObject(n)) { break; } } return null; } function oP(t, e) { const n = new _p({ startPosition: t }); for (const { item: t } of n) { if (e.isLimit(t) || !t.is("element")) { return null; } if (e.checkChild(t, "$text")) { return t; } } return null; } class rP extends au { constructor() { super(...arguments); this._toolbarDefinitions = new Map(); } static get requires() { return [_T]; } static get pluginName() { return "WidgetToolbarRepository"; } init() { const t = this.editor; if (t.plugins.has("BalloonToolbar")) { const e = t.plugins.get("BalloonToolbar"); this.listenTo( e, "show", (e) => { if (cP(t.editing.view.document.selection)) { e.stop(); } }, { priority: "high" } ); } this._balloon = this.editor.plugins.get("ContextualBalloon"); this.on("change:isEnabled", () => { this._updateToolbarsVisibility(); }); this.listenTo(t.ui, "update", () => { this._updateToolbarsVisibility(); }); this.listenTo( t.ui.focusTracker, "change:isFocused", () => { this._updateToolbarsVisibility(); }, { priority: "low" } ); } destroy() { super.destroy(); for (const t of this._toolbarDefinitions.values()) { t.view.destroy(); } } register( t, { ariaLabel: e, items: n, getRelatedElement: i, balloonClassName: o = "ck-toolbar-container", } ) { if (!n.length) { z("widget-toolbar-no-items", { toolbarId: t }); return; } const r = this.editor; const s = r.t; const a = new Ex(r.locale); a.ariaLabel = e || s("Widget toolbar"); if (this._toolbarDefinitions.has(t)) { throw new N("widget-toolbar-duplicated", this, { toolbarId: t }); } const c = { view: a, getRelatedElement: i, balloonClassName: o, itemsConfig: n, initialized: false, }; r.ui.addToolbar(a, { isContextual: true, beforeFocus: () => { const t = i(r.editing.view.document.selection); if (t) { this._showToolbar(c, t); } }, afterBlur: () => { this._hideToolbar(c); }, }); this._toolbarDefinitions.set(t, c); } _updateToolbarsVisibility() { let t = 0; let e = null; let n = null; for (const i of this._toolbarDefinitions.values()) { const o = i.getRelatedElement( this.editor.editing.view.document.selection ); if (!this.isEnabled || !o) { if (this._isToolbarInBalloon(i)) { this._hideToolbar(i); } } else if (!this.editor.ui.focusTracker.isFocused) { if (this._isToolbarVisible(i)) { this._hideToolbar(i); } } else { const r = o.getAncestors().length; if (r > t) { t = r; e = o; n = i; } } } if (n) { this._showToolbar(n, e); } } _hideToolbar(t) { this._balloon.remove(t.view); this.stopListening(this._balloon, "change:visibleView"); } _showToolbar(t, e) { if (this._isToolbarVisible(t)) { sP(this.editor, e); } else if (!this._isToolbarInBalloon(t)) { if (!t.initialized) { t.initialized = true; t.view.fillFromConfig( t.itemsConfig, this.editor.ui.componentFactory ); } this._balloon.add({ view: t.view, position: aP(this.editor, e), balloonClassName: t.balloonClassName, }); this.listenTo(this._balloon, "change:visibleView", () => { for (const t of this._toolbarDefinitions.values()) { if (this._isToolbarVisible(t)) { const e = t.getRelatedElement( this.editor.editing.view.document.selection ); sP(this.editor, e); } } }); } } _isToolbarVisible(t) { return this._balloon.visibleView === t.view; } _isToolbarInBalloon(t) { return this._balloon.hasView(t.view); } } function sP(t, e) { const n = t.plugins.get("ContextualBalloon"); const i = aP(t, e); n.updatePosition(i); } function aP(t, e) { const n = t.editing.view; const i = pS.defaultPositions; return { target: n.domConverter.mapViewToDom(e), positions: [ i.northArrowSouth, i.northArrowSouthWest, i.northArrowSouthEast, i.southArrowNorth, i.southArrowNorthWest, i.southArrowNorthEast, i.viewportStickyNorth, ], }; } function cP(t) { const e = t.getSelectedElement(); return !!(e && uz(e)); } class lP extends mt() { constructor(t) { super(); this.set("activeHandlePosition", null); this.set("proposedWidthPercents", null); this.set("proposedWidth", null); this.set("proposedHeight", null); this.set("proposedHandleHostWidth", null); this.set("proposedHandleHostHeight", null); this._options = t; this._referenceCoordinates = null; } get originalWidth() { return this._originalWidth; } get originalHeight() { return this._originalHeight; } get originalWidthPercents() { return this._originalWidthPercents; } get aspectRatio() { return this._aspectRatio; } begin(t, e, n) { const i = new lc(e); this.activeHandlePosition = hP(t); this._referenceCoordinates = dP(e, mP(this.activeHandlePosition)); this._originalWidth = i.width; this._originalHeight = i.height; this._aspectRatio = i.width / i.height; const o = n.style.width; if (o && o.match(/^\d+(\.\d*)?%$/)) { this._originalWidthPercents = parseFloat(o); } else { this._originalWidthPercents = yz(n, i); } } update(t) { this.proposedWidth = t.width; this.proposedHeight = t.height; this.proposedWidthPercents = t.widthPercents; this.proposedHandleHostWidth = t.handleHostWidth; this.proposedHandleHostHeight = t.handleHostHeight; } } function dP(t, e) { const n = new lc(t); const i = e.split("-"); const o = { x: i[1] == "right" ? n.right : n.left, y: i[0] == "bottom" ? n.bottom : n.top, }; o.x += t.ownerDocument.defaultView.scrollX; o.y += t.ownerDocument.defaultView.scrollY; return o; } function uP(t) { return `ck-widget__resizer__handle-${t}`; } function hP(t) { const e = ["top-left", "top-right", "bottom-right", "bottom-left"]; for (const n of e) { if (t.classList.contains(uP(n))) { return n; } } } function mP(t) { const e = t.split("-"); const n = { top: "bottom", bottom: "top", left: "right", right: "left", }; return `${n[e[0]]}-${n[e[1]]}`; } class gP extends nu { constructor() { super(); const t = this.bindTemplate; this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-size-view", t.to("_viewPosition", (t) => (t ? `ck-orientation-${t}` : "")), ], style: { display: t.if("_isVisible", "none", (t) => !t) }, }, children: [{ text: t.to("_label") }], }); } _bindToState(t, e) { this.bind("_isVisible").to( e, "proposedWidth", e, "proposedHeight", (t, e) => t !== null && e !== null ); this.bind("_label").to( e, "proposedHandleHostWidth", e, "proposedHandleHostHeight", e, "proposedWidthPercents", (e, n, i) => { if (t.unit === "px") { return `${e}×${n}`; } else { return `${i}%`; } } ); this.bind("_viewPosition").to( e, "activeHandlePosition", e, "proposedHandleHostWidth", e, "proposedHandleHostHeight", (t, e, n) => (e < 50 || n < 50 ? "above-center" : t) ); } _dismiss() { this.unbind(); this._isVisible = false; } } class fP extends mt() { constructor(t) { super(); this._viewResizerWrapper = null; this._options = t; this.set("isEnabled", true); this.set("isSelected", false); this.bind("isVisible").to( this, "isEnabled", this, "isSelected", (t, e) => t && e ); this.decorate("begin"); this.decorate("cancel"); this.decorate("commit"); this.decorate("updateSize"); this.on( "commit", (t) => { if ( !this.state.proposedWidth && !this.state.proposedWidthPercents ) { this._cleanup(); t.stop(); } }, { priority: "high" } ); } get state() { return this._state; } show() { const t = this._options.editor.editing.view; t.change((t) => { t.removeClass("ck-hidden", this._viewResizerWrapper); }); } hide() { const t = this._options.editor.editing.view; t.change((t) => { t.addClass("ck-hidden", this._viewResizerWrapper); }); } attach() { const t = this; const e = this._options.viewElement; const n = this._options.editor.editing.view; n.change((n) => { const i = n.createUIElement( "div", { class: "ck ck-reset_all ck-widget__resizer" }, function (e) { const n = this.toDomElement(e); t._appendHandles(n); t._appendSizeUI(n); return n; } ); n.insert(n.createPositionAt(e, "end"), i); n.addClass("ck-widget_with-resizer", e); this._viewResizerWrapper = i; if (!this.isVisible) { this.hide(); } }); this.on("change:isVisible", () => { if (this.isVisible) { this.show(); this.redraw(); } else { this.hide(); } }); } begin(t) { this._state = new lP(this._options); this._sizeView._bindToState(this._options, this.state); this._initialViewWidth = this._options.viewElement.getStyle("width"); this.state.begin(t, this._getHandleHost(), this._getResizeHost()); } updateSize(t) { const e = this._proposeNewSize(t); const n = this._options.editor.editing.view; n.change((t) => { const n = this._options.unit || "%"; const i = (n === "%" ? e.widthPercents : e.width) + n; t.setStyle("width", i, this._options.viewElement); }); const i = this._getHandleHost(); const o = new lc(i); const r = Math.round(o.width); const s = Math.round(o.height); const a = new lc(i); e.width = Math.round(a.width); e.height = Math.round(a.height); this.redraw(o); this.state.update({ ...e, handleHostWidth: r, handleHostHeight: s }); } commit() { const t = this._options.unit || "%"; const e = (t === "%" ? this.state.proposedWidthPercents : this.state.proposedWidth) + t; this._options.editor.editing.view.change(() => { this._cleanup(); this._options.onCommit(e); }); } cancel() { this._cleanup(); } destroy() { this.cancel(); } redraw(t) { const e = this._domResizerWrapper; if (!bP(e)) { return; } const n = e.parentElement; const i = this._getHandleHost(); const o = this._viewResizerWrapper; const r = [ o.getStyle("width"), o.getStyle("height"), o.getStyle("left"), o.getStyle("top"), ]; let s; if (n.isSameNode(i)) { const e = t || new lc(i); s = [e.width + "px", e.height + "px", undefined, undefined]; } else { s = [ i.offsetWidth + "px", i.offsetHeight + "px", i.offsetLeft + "px", i.offsetTop + "px", ]; } if (Et(r, s) !== "same") { this._options.editor.editing.view.change((t) => { t.setStyle( { width: s[0], height: s[1], left: s[2], top: s[3] }, o ); }); } } containsHandle(t) { return this._domResizerWrapper.contains(t); } static isResizeHandle(t) { return t.classList.contains("ck-widget__resizer__handle"); } _cleanup() { this._sizeView._dismiss(); const t = this._options.editor.editing.view; t.change((t) => { t.setStyle( "width", this._initialViewWidth, this._options.viewElement ); }); } _proposeNewSize(t) { const e = this.state; const n = kP(t); const i = this._options.isCentered ? this._options.isCentered(this) : true; const o = { x: e._referenceCoordinates.x - (n.x + e.originalWidth), y: n.y - e.originalHeight - e._referenceCoordinates.y, }; if (i && e.activeHandlePosition.endsWith("-right")) { o.x = n.x - (e._referenceCoordinates.x + e.originalWidth); } if (i) { o.x *= 2; } let r = Math.abs(e.originalWidth + o.x); let s = Math.abs(e.originalHeight + o.y); const a = r / e.aspectRatio > s ? "width" : "height"; if (a == "width") { s = r / e.aspectRatio; } else { r = s * e.aspectRatio; } return { width: Math.round(r), height: Math.round(s), widthPercents: Math.min( Math.round( (e.originalWidthPercents / e.originalWidth) * r * 100 ) / 100, 100 ), }; } _getResizeHost() { const t = this._domResizerWrapper.parentElement; return this._options.getResizeHost(t); } _getHandleHost() { const t = this._domResizerWrapper.parentElement; return this._options.getHandleHost(t); } get _domResizerWrapper() { return this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper ); } _appendHandles(t) { const e = ["top-left", "top-right", "bottom-right", "bottom-left"]; for (const n of e) { t.appendChild( new vd({ tag: "div", attributes: { class: `ck-widget__resizer__handle ${pP(n)}` }, }).render() ); } } _appendSizeUI(t) { this._sizeView = new gP(); this._sizeView.render(); t.appendChild(this._sizeView.element); } } function pP(t) { return `ck-widget__resizer__handle-${t}`; } function kP(t) { return { x: t.pageX, y: t.pageY }; } function bP(t) { return t && t.ownerDocument && t.ownerDocument.contains(t); } var wP = n(6645); var AP = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; AP.insert = "head"; AP.singleton = true; var _P = Zd()(wP.A, AP); const CP = wP.A.locals || {}; class vP extends au { constructor() { super(...arguments); this._resizers = new Map(); } static get pluginName() { return "WidgetResize"; } init() { const t = this.editor.editing; const n = e.window.document; this.set("selectedResizer", null); this.set("_activeResizer", null); t.view.addObserver(UA); this._observer = new (Za())(); this.listenTo( t.view.document, "mousedown", this._mouseDownListener.bind(this), { priority: "high" } ); this._observer.listenTo( n, "mousemove", this._mouseMoveListener.bind(this) ); this._observer.listenTo( n, "mouseup", this._mouseUpListener.bind(this) ); this._redrawSelectedResizerThrottled = MS( () => this.redrawSelectedResizer(), 200 ); this.editor.ui.on("update", this._redrawSelectedResizerThrottled); this.editor.model.document.on( "change", () => { for (const [t, e] of this._resizers) { if (!t.isAttached()) { this._resizers.delete(t); e.destroy(); } } }, { priority: "lowest" } ); this._observer.listenTo( e.window, "resize", this._redrawSelectedResizerThrottled ); const i = this.editor.editing.view.document.selection; i.on("change", () => { const t = i.getSelectedElement(); const e = this.getResizerByViewElement(t) || null; if (e) { this.select(e); } else { this.deselect(); } }); } redrawSelectedResizer() { if (this.selectedResizer && this.selectedResizer.isVisible) { this.selectedResizer.redraw(); } } destroy() { super.destroy(); this._observer.stopListening(); for (const t of this._resizers.values()) { t.destroy(); } this._redrawSelectedResizerThrottled.cancel(); } select(t) { this.deselect(); this.selectedResizer = t; this.selectedResizer.isSelected = true; } deselect() { if (this.selectedResizer) { this.selectedResizer.isSelected = false; } this.selectedResizer = null; } attachTo(t) { const e = new fP(t); const n = this.editor.plugins; e.attach(); if (n.has("WidgetToolbarRepository")) { const t = n.get("WidgetToolbarRepository"); e.on( "begin", () => { t.forceDisabled("resize"); }, { priority: "lowest" } ); e.on( "cancel", () => { t.clearForceDisabled("resize"); }, { priority: "highest" } ); e.on( "commit", () => { t.clearForceDisabled("resize"); }, { priority: "highest" } ); } this._resizers.set(t.viewElement, e); const i = this.editor.editing.view.document.selection; const o = i.getSelectedElement(); if (this.getResizerByViewElement(o) == e) { this.select(e); } return e; } getResizerByViewElement(t) { return this._resizers.get(t); } _getResizerByHandle(t) { for (const e of this._resizers.values()) { if (e.containsHandle(t)) { return e; } } } _mouseDownListener(t, e) { const n = e.domTarget; if (!fP.isResizeHandle(n)) { return; } this._activeResizer = this._getResizerByHandle(n) || null; if (this._activeResizer) { this._activeResizer.begin(n); t.stop(); e.preventDefault(); } } _mouseMoveListener(t, e) { if (this._activeResizer) { this._activeResizer.updateSize(e); } } _mouseUpListener() { if (this._activeResizer) { this._activeResizer.commit(); this._activeResizer = null; } } } const yP = wc("px"); class xP extends nu { constructor() { super(); const t = this.bindTemplate; this.set({ isVisible: false, left: null, top: null, width: null }); this.setTemplate({ tag: "div", attributes: { class: [ "ck", "ck-clipboard-drop-target-line", t.if("isVisible", "ck-hidden", (t) => !t), ], style: { left: t.to("left", (t) => yP(t)), top: t.to("top", (t) => yP(t)), width: t.to("width", (t) => yP(t)), }, }, }); } } class EP extends au { constructor() { super(...arguments); this.removeDropMarkerDelayed = dd(() => this.removeDropMarker(), 40); this._updateDropMarkerThrottled = MS( (t) => this._updateDropMarker(t), 40 ); this._reconvertMarkerThrottled = MS(() => { if (this.editor.model.markers.has("drop-target")) { this.editor.editing.reconvertMarker("drop-target"); } }, 0); this._dropTargetLineView = new xP(); this._domEmitter = new (Za())(); this._scrollables = new Map(); } static get pluginName() { return "DragDropTarget"; } init() { this._setupDropMarker(); } destroy() { this._domEmitter.stopListening(); for (const { resizeObserver: t } of this._scrollables.values()) { t.destroy(); } this._updateDropMarkerThrottled.cancel(); this.removeDropMarkerDelayed.cancel(); this._reconvertMarkerThrottled.cancel(); return super.destroy(); } updateDropMarker(t, e, n, i, o, r) { this.removeDropMarkerDelayed.cancel(); const s = DP(this.editor, t, e, n, i, o, r); if (!s) { return; } if (r && r.containsRange(s)) { return this.removeDropMarker(); } this._updateDropMarkerThrottled(s); } getFinalDropRange(t, e, n, i, o, r) { const s = DP(this.editor, t, e, n, i, o, r); this.removeDropMarker(); return s; } removeDropMarker() { const t = this.editor.model; this.removeDropMarkerDelayed.cancel(); this._updateDropMarkerThrottled.cancel(); this._dropTargetLineView.isVisible = false; if (t.markers.has("drop-target")) { t.change((t) => { t.removeMarker("drop-target"); }); } } _setupDropMarker() { const t = this.editor; t.ui.view.body.add(this._dropTargetLineView); t.conversion .for("editingDowncast") .markerToHighlight({ model: "drop-target", view: { classes: ["ck-clipboard-drop-target-range"] }, }); t.conversion.for("editingDowncast").markerToElement({ model: "drop-target", view: (e, { writer: n }) => { if (t.model.schema.checkChild(e.markerRange.start, "$text")) { this._dropTargetLineView.isVisible = false; return this._createDropTargetPosition(n); } else { if (e.markerRange.isCollapsed) { this._updateDropTargetLine(e.markerRange); } else { this._dropTargetLineView.isVisible = false; } } }, }); } _updateDropMarker(t) { const e = this.editor; const n = e.model.markers; e.model.change((e) => { if (n.has("drop-target")) { if (!n.get("drop-target").getRange().isEqual(t)) { e.updateMarker("drop-target", { range: t }); } } else { e.addMarker("drop-target", { range: t, usingOperation: false, affectsData: false, }); } }); } _createDropTargetPosition(t) { return t.createUIElement( "span", { class: "ck ck-clipboard-drop-target-position" }, function (t) { const e = this.toDomElement(t); e.append("⁠", t.createElement("span"), "⁠"); return e; } ); } _updateDropTargetLine(t) { const n = this.editor.editing; const i = t.start.nodeBefore; const o = t.start.nodeAfter; const r = t.start.parent; const s = i ? n.mapper.toViewElement(i) : null; const a = s ? n.view.domConverter.mapViewToDom(s) : null; const c = o ? n.mapper.toViewElement(o) : null; const l = c ? n.view.domConverter.mapViewToDom(c) : null; const d = n.mapper.toViewElement(r); if (!d) { return; } const u = n.view.domConverter.mapViewToDom(d); const h = this._getScrollableRect(d); const { scrollX: m, scrollY: g } = e.window; const f = a ? new lc(a) : null; const p = l ? new lc(l) : null; const k = new lc(u).excludeScrollbarsAndBorders(); const b = f ? f.bottom : k.top; const w = p ? p.top : k.bottom; const A = e.window.getComputedStyle(u); const _ = b <= w ? (b + w) / 2 : w; if (h.top < _ && _ < h.bottom) { const t = k.left + parseFloat(A.paddingLeft); const e = k.right - parseFloat(A.paddingRight); const n = Math.max(t + m, h.left); const i = Math.min(e + m, h.right); this._dropTargetLineView.set({ isVisible: true, left: n, top: _ + g, width: i - n, }); } else { this._dropTargetLineView.isVisible = false; } } _getScrollableRect(t) { const e = t.root.rootName; let n; if (this._scrollables.has(e)) { n = this._scrollables.get(e).domElement; } else { const i = this.editor.editing.view.domConverter.mapViewToDom(t); n = IP(i); this._domEmitter.listenTo( n, "scroll", this._reconvertMarkerThrottled, { usePassive: true } ); const o = new kc(n, this._reconvertMarkerThrottled); this._scrollables.set(e, { domElement: n, resizeObserver: o }); } return new lc(n).excludeScrollbarsAndBorders(); } } function DP(t, e, n, i, o, r, s) { const a = t.model; const c = t.editing.mapper; const l = MP(t, e); let d = l; while (d) { if (!r) { if (a.schema.checkChild(d, "$text")) { if (n) { const e = n[0].start; const r = c.toModelPosition(e); const l = !s || Array.from(s.getItems()).every((t) => a.schema.checkChild(r, t) ); if (l) { if (a.schema.checkChild(r, "$text")) { return a.createRange(r); } else if (e) { return TP(t, MP(t, e.parent), i, o); } } } } else if (a.schema.isInline(d)) { return TP(t, d, i, o); } } if (a.schema.isBlock(d)) { return TP(t, d, i, o); } else if (a.schema.checkChild(d, "$block")) { const e = Array.from(d.getChildren()).filter( (e) => e.is("element") && !SP(t, e) ); let n = 0; let r = e.length; if (r == 0) { return a.createRange(a.createPositionAt(d, "end")); } while (n < r - 1) { const s = Math.floor((n + r) / 2); const a = BP(t, e[s], i, o); if (a == "before") { r = s; } else { n = s; } } return TP(t, e[n], i, o); } d = d.parent; } return null; } function SP(t, n) { const i = t.editing.mapper; const o = t.editing.view.domConverter; const r = i.toViewElement(n); if (!r) { return true; } const s = o.mapViewToDom(r); return e.window.getComputedStyle(s).float != "none"; } function TP(t, e, n, i) { const o = t.model; return o.createRange(o.createPositionAt(e, BP(t, e, n, i))); } function BP(t, e, n, i) { const o = t.editing.mapper; const r = t.editing.view.domConverter; const s = o.toViewElement(e); const a = r.mapViewToDom(s); const c = new lc(a); if (t.model.schema.isInline(e)) { return n < (c.left + c.right) / 2 ? "before" : "after"; } else { return i < (c.top + c.bottom) / 2 ? "before" : "after"; } } function MP(t, e) { const n = t.editing.mapper; const i = t.editing.view; const o = n.toModelElement(e); if (o) { return o; } const r = i.createPositionBefore(e); const s = n.findMappedViewAncestor(r); return n.toModelElement(s); } function IP(t) { let n = t; do { n = n.parentElement; const t = e.window.getComputedStyle(n).overflowY; if (t == "auto" || t == "scroll") { break; } } while (n.tagName != "BODY"); return n; } class LP extends au { constructor() { super(...arguments); this._isBlockDragging = false; this._domEmitter = new (Za())(); } static get pluginName() { return "DragDropBlockToolbar"; } init() { const t = this.editor; this.listenTo(t, "change:isReadOnly", (t, e, n) => { if (n) { this.forceDisabled("readOnlyMode"); this._isBlockDragging = false; } else { this.clearForceDisabled("readOnlyMode"); } }); if (a.isAndroid) { this.forceDisabled("noAndroidSupport"); } if (t.plugins.has("BlockToolbar")) { const n = t.plugins.get("BlockToolbar"); const i = n.buttonView.element; this._domEmitter.listenTo(i, "dragstart", (t, e) => this._handleBlockDragStart(e) ); this._domEmitter.listenTo(e.document, "dragover", (t, e) => this._handleBlockDragging(e) ); this._domEmitter.listenTo(e.document, "drop", (t, e) => this._handleBlockDragging(e) ); this._domEmitter.listenTo( e.document, "dragend", () => this._handleBlockDragEnd(), { useCapture: true } ); if (this.isEnabled) { i.setAttribute("draggable", "true"); } this.on("change:isEnabled", (t, e, n) => { i.setAttribute("draggable", n ? "true" : "false"); }); } } destroy() { this._domEmitter.stopListening(); return super.destroy(); } _handleBlockDragStart(t) { if (!this.isEnabled) { return; } const e = this.editor.model; const n = e.document.selection; const i = this.editor.editing.view; const o = Array.from(n.getSelectedBlocks()); const r = e.createRange( e.createPositionBefore(o[0]), e.createPositionAfter(o[o.length - 1]) ); e.change((t) => t.setSelection(r)); this._isBlockDragging = true; i.focus(); i.getObserver(gN).onDomEvent(t); } _handleBlockDragging(t) { if (!this.isEnabled || !this._isBlockDragging) { return; } const e = t.clientX + (this.editor.locale.contentLanguageDirection == "ltr" ? 100 : -100); const n = t.clientY; const i = document.elementFromPoint(e, n); const o = this.editor.editing.view; if (!i || !i.closest(".ck-editor__editable")) { return; } o.getObserver(gN).onDomEvent({ ...t, type: t.type, dataTransfer: t.dataTransfer, target: i, clientX: e, clientY: n, preventDefault: () => t.preventDefault(), stopPropagation: () => t.stopPropagation(), }); } _handleBlockDragEnd() { this._isBlockDragging = false; } } var NP = n(8643); var zP = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; zP.insert = "head"; zP.singleton = true; var PP = Zd()(NP.A, zP); const RP = NP.A.locals || {}; class VP extends au { constructor() { super(...arguments); this._clearDraggableAttributesDelayed = dd( () => this._clearDraggableAttributes(), 40 ); this._blockMode = false; this._domEmitter = new (Za())(); } static get pluginName() { return "DragDrop"; } static get requires() { return [iz, tP, EP, LP]; } init() { const t = this.editor; const e = t.editing.view; this._draggedRange = null; this._draggingUid = ""; this._draggableElement = null; e.addObserver(gN); e.addObserver(UA); this._setupDragging(); this._setupContentInsertionIntegration(); this._setupClipboardInputIntegration(); this._setupDraggableAttributeHandling(); this.listenTo(t, "change:isReadOnly", (t, e, n) => { if (n) { this.forceDisabled("readOnlyMode"); } else { this.clearForceDisabled("readOnlyMode"); } }); this.on("change:isEnabled", (t, e, n) => { if (!n) { this._finalizeDragging(false); } }); if (a.isAndroid) { this.forceDisabled("noAndroidSupport"); } } destroy() { if (this._draggedRange) { this._draggedRange.detach(); this._draggedRange = null; } if (this._previewContainer) { this._previewContainer.remove(); } this._domEmitter.stopListening(); this._clearDraggableAttributesDelayed.cancel(); return super.destroy(); } _setupDragging() { const t = this.editor; const n = t.model; const i = t.editing.view; const o = i.document; const r = t.plugins.get(EP); this.listenTo( o, "dragstart", (t, e) => { if (e.target && e.target.is("editableElement")) { e.preventDefault(); return; } this._prepareDraggedRange(e.target); if (!this._draggedRange) { e.preventDefault(); return; } this._draggingUid = T(); e.dataTransfer.effectAllowed = this.isEnabled ? "copyMove" : "copy"; e.dataTransfer.setData( "application/ckeditor5-dragging-uid", this._draggingUid ); const i = n.createSelection(this._draggedRange.toRange()); const o = this.editor.plugins.get("ClipboardPipeline"); o._fireOutputTransformationEvent(e.dataTransfer, i, "dragstart"); const { dataTransfer: r, domTarget: s, domEvent: a } = e; const { clientX: c } = a; this._updatePreview({ dataTransfer: r, domTarget: s, clientX: c, }); e.stopPropagation(); if (!this.isEnabled) { this._draggedRange.detach(); this._draggedRange = null; this._draggingUid = ""; } }, { priority: "low" } ); this.listenTo( o, "dragend", (t, e) => { this._finalizeDragging( !e.dataTransfer.isCanceled && e.dataTransfer.dropEffect == "move" ); }, { priority: "low" } ); this._domEmitter.listenTo( e.document, "dragend", () => { this._blockMode = false; }, { useCapture: true } ); this.listenTo(o, "dragenter", () => { if (!this.isEnabled) { return; } i.focus(); }); this.listenTo(o, "dragleave", () => { r.removeDropMarkerDelayed(); }); this.listenTo( o, "dragging", (t, e) => { if (!this.isEnabled) { e.dataTransfer.dropEffect = "none"; return; } const { clientX: n, clientY: i } = e.domEvent; r.updateDropMarker( e.target, e.targetRanges, n, i, this._blockMode, this._draggedRange ); if (!this._draggedRange) { e.dataTransfer.dropEffect = "copy"; } if (!a.isGecko) { if (e.dataTransfer.effectAllowed == "copy") { e.dataTransfer.dropEffect = "copy"; } else if ( ["all", "copyMove"].includes(e.dataTransfer.effectAllowed) ) { e.dataTransfer.dropEffect = "move"; } } t.stop(); }, { priority: "low" } ); } _setupClipboardInputIntegration() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = t.plugins.get(EP); this.listenTo( n, "clipboardInput", (e, n) => { if (n.method != "drop") { return; } const { clientX: o, clientY: r } = n.domEvent; const s = i.getFinalDropRange( n.target, n.targetRanges, o, r, this._blockMode, this._draggedRange ); if (!s) { this._finalizeDragging(false); e.stop(); return; } if ( this._draggedRange && this._draggingUid != n.dataTransfer.getData("application/ckeditor5-dragging-uid") ) { this._draggedRange.detach(); this._draggedRange = null; this._draggingUid = ""; } const a = OP(n.dataTransfer) == "move"; if ( a && this._draggedRange && this._draggedRange.containsRange(s, true) ) { this._finalizeDragging(false); e.stop(); return; } n.targetRanges = [t.editing.mapper.toViewRange(s)]; }, { priority: "high" } ); } _setupContentInsertionIntegration() { const t = this.editor.plugins.get(iz); t.on( "contentInsertion", (t, e) => { if (!this.isEnabled || e.method !== "drop") { return; } const n = e.targetRanges.map((t) => this.editor.editing.mapper.toModelRange(t) ); this.editor.model.change((t) => t.setSelection(n)); }, { priority: "high" } ); t.on( "contentInsertion", (t, e) => { if (!this.isEnabled || e.method !== "drop") { return; } const n = OP(e.dataTransfer) == "move"; const i = !e.resultRange || !e.resultRange.isCollapsed; this._finalizeDragging(i && n); }, { priority: "lowest" } ); } _setupDraggableAttributeHandling() { const t = this.editor; const e = t.editing.view; const n = e.document; this.listenTo(n, "mousedown", (i, o) => { if (a.isAndroid || !o) { return; } this._clearDraggableAttributesDelayed.cancel(); let r = FP(o.target); if (a.isBlink && !t.isReadOnly && !r && !n.selection.isCollapsed) { const t = n.selection.getSelectedElement(); if (!t || !uz(t)) { r = n.selection.editableElement; } } if (r) { e.change((t) => { t.setAttribute("draggable", "true", r); }); this._draggableElement = t.editing.mapper.toModelElement(r); } }); this.listenTo(n, "mouseup", () => { if (!a.isAndroid) { this._clearDraggableAttributesDelayed(); } }); } _clearDraggableAttributes() { const t = this.editor.editing; t.view.change((e) => { if ( this._draggableElement && this._draggableElement.root.rootName != "$graveyard" ) { e.removeAttribute( "draggable", t.mapper.toViewElement(this._draggableElement) ); } this._draggableElement = null; }); } _finalizeDragging(t) { const e = this.editor; const n = e.model; const i = e.plugins.get(EP); i.removeDropMarker(); this._clearDraggableAttributes(); if (e.plugins.has("WidgetToolbarRepository")) { const t = e.plugins.get("WidgetToolbarRepository"); t.clearForceDisabled("dragDrop"); } this._draggingUid = ""; if (this._previewContainer) { this._previewContainer.remove(); this._previewContainer = undefined; } if (!this._draggedRange) { return; } if (t && this.isEnabled) { n.change((t) => { const e = n.createSelection(this._draggedRange); n.deleteContent(e, { doNotAutoparagraph: true }); const i = e.getFirstPosition().parent; if ( i.isEmpty && !n.schema.checkChild(i, "$text") && n.schema.checkChild(i, "paragraph") ) { t.insertElement("paragraph", i, 0); } }); } this._draggedRange.detach(); this._draggedRange = null; } _prepareDraggedRange(t) { const e = this.editor; const n = e.model; const i = n.document.selection; const o = t ? FP(t) : null; if (o) { const t = e.editing.mapper.toModelElement(o); this._draggedRange = Wp.fromRange(n.createRangeOn(t)); this._blockMode = n.schema.isBlock(t); if (e.plugins.has("WidgetToolbarRepository")) { const t = e.plugins.get("WidgetToolbarRepository"); t.forceDisabled("dragDrop"); } return; } if (i.isCollapsed && !i.getFirstPosition().parent.isEmpty) { return; } const r = Array.from(i.getSelectedBlocks()); const s = i.getFirstRange(); if (r.length == 0) { this._draggedRange = Wp.fromRange(s); return; } const a = jP(n, r); if (r.length > 1) { this._draggedRange = Wp.fromRange(a); this._blockMode = true; } else if (r.length == 1) { const t = s.start.isTouching(a.start) && s.end.isTouching(a.end); this._draggedRange = Wp.fromRange(t ? a : s); this._blockMode = t; } n.change((t) => t.setSelection(this._draggedRange.toRange())); } _updatePreview({ dataTransfer: t, domTarget: n, clientX: i }) { const o = this.editor.editing.view; const r = o.document.selection.editableElement; const s = o.domConverter.mapViewToDom(r); const c = e.window.getComputedStyle(s); if (!this._previewContainer) { this._previewContainer = ie(e.document, "div", { style: "position: fixed; left: -999999px;", }); e.document.body.appendChild(this._previewContainer); } else if (this._previewContainer.firstElementChild) { this._previewContainer.removeChild( this._previewContainer.firstElementChild ); } const l = new lc(s); if (s.contains(n)) { return; } const d = parseFloat(c.paddingLeft); const u = ie(e.document, "div"); u.className = "ck ck-content"; u.style.width = c.width; u.style.paddingLeft = `${l.left - i + d}px`; if (a.isiOS) { u.style.backgroundColor = "white"; } u.innerHTML = t.getData("text/html"); t.setDragImage(u, 0, 0); this._previewContainer.appendChild(u); } } function OP(t) { if (a.isGecko) { return t.dropEffect; } return ["all", "copyMove"].includes(t.effectAllowed) ? "move" : "copy"; } function FP(t) { if (t.is("editableElement")) { return null; } if (t.hasClass("ck-widget__selection-handle")) { return t.findAncestor(uz); } if (uz(t)) { return t; } const e = t.findAncestor((t) => uz(t) || t.is("editableElement")); if (uz(e)) { return e; } return null; } function jP(t, e) { const n = e[0]; const i = e[e.length - 1]; const o = n.getCommonAncestor(i); const r = t.createPositionBefore(n); const s = t.createPositionAfter(i); if (o && o.is("element") && !t.schema.isLimit(o)) { const e = t.createRangeOn(o); const n = r.isTouching(e.start); const i = s.isTouching(e.end); if (n && i) { return jP(t, [o]); } } return t.createRange(r, s); } class HP extends au { static get pluginName() { return "PastePlainText"; } static get requires() { return [iz]; } init() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = n.document; const o = e.document.selection; let r = false; n.addObserver(gN); this.listenTo(i, "keydown", (t, e) => { r = e.shiftKey; }); t.plugins.get(iz).on("contentInsertion", (t, n) => { if (!r && !UP(n.content, e.schema)) { return; } e.change((t) => { const i = Array.from(o.getAttributes()).filter( ([t]) => e.schema.getAttributeProperties(t).isFormatting ); if (!o.isCollapsed) { e.deleteContent(o, { doNotAutoparagraph: true }); } i.push(...o.getAttributes()); const r = t.createRangeIn(n.content); for (const e of r.getItems()) { if (e.is("$textProxy")) { t.setAttributes(i, e); } } }); }); } } function UP(t, e) { if (t.childCount > 1) { return false; } const n = t.getChild(0); if (e.isObject(n)) { return false; } return Array.from(n.getAttributeKeys()).length == 0; } class $P extends au { static get pluginName() { return "Clipboard"; } static get requires() { return [nz, iz, VP, HP]; } init() { const t = this.editor; const e = this.editor.t; t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: e("Copy selected content"), keystroke: "CTRL+C" }, { label: e("Paste content"), keystroke: "CTRL+V" }, { label: e("Paste content as plain text"), keystroke: "CTRL+SHIFT+V", }, ], }); } } class qP extends lu { constructor(t) { super(t); this.affectsData = false; } execute() { const t = this.editor.model; const e = t.document.selection; let n = t.schema.getLimitElement(e); if (e.containsEntireContent(n) || !WP(t.schema, n)) { do { n = n.parent; if (!n) { return; } } while (!WP(t.schema, n)); } t.change((t) => { t.setSelection(n, "in"); }); } } function WP(t, e) { return ( t.isLimit(e) && (t.checkChild(e, "$text") || t.checkChild(e, "paragraph")) ); } const GP = Yc("Ctrl+A"); class KP extends au { static get pluginName() { return "SelectAllEditing"; } init() { const t = this.editor; const e = t.t; const n = t.editing.view; const i = n.document; t.commands.add("selectAll", new qP(t)); this.listenTo(i, "keydown", (e, n) => { if (Kc(n) === GP) { t.execute("selectAll"); n.preventDefault(); } }); t.accessibility.addKeystrokeInfos({ keystrokes: [{ label: e("Select all"), keystroke: "CTRL+A" }], }); } } const YP = ''; class QP extends au { static get pluginName() { return "SelectAllUI"; } init() { const t = this.editor; t.ui.componentFactory.add("selectAll", () => { const t = this._createButton(iy); t.set({ tooltip: true }); return t; }); t.ui.componentFactory.add("menuBar:selectAll", () => this._createButton(wM) ); } _createButton(t) { const e = this.editor; const n = e.locale; const i = e.commands.get("selectAll"); const o = new t(e.locale); const r = n.t; o.set({ label: r("Select all"), icon: YP, keystroke: "Ctrl+A" }); o.bind("isEnabled").to(i, "isEnabled"); this.listenTo(o, "execute", () => { e.execute("selectAll"); e.editing.view.focus(); }); return o; } } class ZP extends au { static get requires() { return [KP, QP]; } static get pluginName() { return "SelectAll"; } } class JP extends lu { constructor(t) { super(t); this._stack = []; this._createdBatches = new WeakSet(); this.refresh(); this._isEnabledBasedOnSelection = false; this.listenTo( t.data, "set", (t, e) => { e[1] = { ...e[1] }; const n = e[1]; if (!n.batchType) { n.batchType = { isUndoable: false }; } }, { priority: "high" } ); this.listenTo(t.data, "set", (t, e) => { const n = e[1]; if (!n.batchType.isUndoable) { this.clearStack(); } }); } refresh() { this.isEnabled = this._stack.length > 0; } get createdBatches() { return this._createdBatches; } addBatch(t) { const e = this.editor.model.document.selection; const n = { ranges: e.hasOwnRange ? Array.from(e.getRanges()) : [], isBackward: e.isBackward, }; this._stack.push({ batch: t, selection: n }); this.refresh(); } clearStack() { this._stack = []; this.refresh(); } _restoreSelection(t, e, n) { const i = this.editor.model; const o = i.document; const r = []; const s = t.map((t) => t.getTransformedByOperations(n)); const a = s.flat(); for (const t of s) { const e = t .filter((t) => t.root != o.graveyard) .filter((t) => !tR(t, a)); if (!e.length) { continue; } XP(e); r.push(e[0]); } if (r.length) { i.change((t) => { t.setSelection(r, { backward: e }); }); } } _undo(t, e) { const n = this.editor.model; const i = n.document; this._createdBatches.add(e); const o = t.operations.slice().filter((t) => t.isDocumentOperation); o.reverse(); for (const t of o) { const o = t.baseVersion + 1; const r = Array.from(i.history.getOperations(o)); const s = Lw([t.getReversed()], r, { useRelations: true, document: this.editor.model.document, padWithNoOps: false, forceWeakRemove: true, }); const a = s.operationsA; for (let o of a) { const r = o.affectedSelectable; if (r && !n.canEditAt(r)) { o = new Cw(o.baseVersion); } e.addOperation(o); n.applyOperation(o); i.history.setOperationAsUndone(t, o); } } } } function XP(t) { t.sort((t, e) => (t.start.isBefore(e.start) ? -1 : 1)); for (let e = 1; e < t.length; e++) { const n = t[e - 1]; const i = n.getJoined(t[e], true); if (i) { e--; t.splice(e, 2, i); } } } function tR(t, e) { return e.some((e) => e !== t && e.containsRange(t, true)); } class eR extends JP { execute(t = null) { const e = t ? this._stack.findIndex((e) => e.batch == t) : this._stack.length - 1; const n = this._stack.splice(e, 1)[0]; const i = this.editor.model.createBatch({ isUndo: true }); this.editor.model.enqueueChange(i, () => { this._undo(n.batch, i); const t = this.editor.model.document.history.getOperations( n.batch.baseVersion ); this._restoreSelection( n.selection.ranges, n.selection.isBackward, t ); }); this.fire("revert", n.batch, i); this.refresh(); } } class nR extends JP { execute() { const t = this._stack.pop(); const e = this.editor.model.createBatch({ isUndo: true }); this.editor.model.enqueueChange(e, () => { const n = t.batch.operations[t.batch.operations.length - 1]; const i = n.baseVersion + 1; const o = this.editor.model.document.history.getOperations(i); this._restoreSelection( t.selection.ranges, t.selection.isBackward, o ); this._undo(t.batch, e); }); this.refresh(); } } class iR extends au { constructor() { super(...arguments); this._batchRegistry = new WeakSet(); } static get pluginName() { return "UndoEditing"; } init() { const t = this.editor; const e = t.t; this._undoCommand = new eR(t); this._redoCommand = new nR(t); t.commands.add("undo", this._undoCommand); t.commands.add("redo", this._redoCommand); this.listenTo( t.model, "applyOperation", (t, e) => { const n = e[0]; if (!n.isDocumentOperation) { return; } const i = n.batch; const o = this._redoCommand.createdBatches.has(i); const r = this._undoCommand.createdBatches.has(i); const s = this._batchRegistry.has(i); if (s) { return; } this._batchRegistry.add(i); if (!i.isUndoable) { return; } if (o) { this._undoCommand.addBatch(i); } else if (!r) { this._undoCommand.addBatch(i); this._redoCommand.clearStack(); } }, { priority: "highest" } ); this.listenTo(this._undoCommand, "revert", (t, e, n) => { this._redoCommand.addBatch(n); }); t.keystrokes.set("CTRL+Z", "undo"); t.keystrokes.set("CTRL+Y", "redo"); t.keystrokes.set("CTRL+SHIFT+Z", "redo"); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: e("Undo"), keystroke: "CTRL+Z" }, { label: e("Redo"), keystroke: [["CTRL+Y"], ["CTRL+SHIFT+Z"]] }, ], }); } } class oR extends au { static get pluginName() { return "UndoUI"; } init() { const t = this.editor; const e = t.locale; const n = t.t; const i = e.uiLanguageDirection == "ltr" ? Bv.undo : Bv.redo; const o = e.uiLanguageDirection == "ltr" ? Bv.redo : Bv.undo; this._addButtonsToFactory("undo", n("Undo"), "CTRL+Z", i); this._addButtonsToFactory("redo", n("Redo"), "CTRL+Y", o); } _addButtonsToFactory(t, e, n, i) { const o = this.editor; o.ui.componentFactory.add(t, () => { const o = this._createButton(iy, t, e, n, i); o.set({ tooltip: true }); return o; }); o.ui.componentFactory.add("menuBar:" + t, () => this._createButton(wM, t, e, n, i) ); } _createButton(t, e, n, i, o) { const r = this.editor; const s = r.locale; const a = r.commands.get(e); const c = new t(s); c.set({ label: n, icon: o, keystroke: i }); c.bind("isEnabled").to(a, "isEnabled"); this.listenTo(c, "execute", () => { r.execute(e); r.editing.view.focus(); }); return c; } } class rR extends au { static get requires() { return [iR, oR]; } static get pluginName() { return "Undo"; } } class sR extends au { static get requires() { return [$v, $P, QL, ZP, nN, PI, rR]; } static get pluginName() { return "Essentials"; } } var aR = n(7072); var cR = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; cR.insert = "head"; cR.singleton = true; var lR = Zd()(aR.A, cR); const dR = aR.A.locals || {}; var uR = n(9865); var hR = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; hR.insert = "head"; hR.singleton = true; var mR = Zd()(uR.A, hR); const gR = uR.A.locals || {}; class fR extends nu { constructor(t) { super(t); const e = t.t; this.children = this.createCollection(); this.set("matchCount", 0); this.set("highlightOffset", 0); this.set("isDirty", false); this.set("_areCommandsEnabled", {}); this.set("_resultsCounterText", ""); this.set("_matchCase", false); this.set("_wholeWordsOnly", false); this.bind("_searchResultsFound").to( this, "matchCount", this, "isDirty", (t, e) => t > 0 && !e ); this._findInputView = this._createInputField(e("Find in text…")); this._findPrevButtonView = this._createButton({ label: e("Previous result"), class: "ck-button-prev", icon: Bv.previousArrow, keystroke: "Shift+F3", tooltip: true, }); this._findNextButtonView = this._createButton({ label: e("Next result"), class: "ck-button-next", icon: Bv.previousArrow, keystroke: "F3", tooltip: true, }); this._replaceInputView = this._createInputField( e("Replace with…"), "ck-labeled-field-replace" ); this._inputsDivView = this._createInputsDiv(); this._matchCaseSwitchView = this._createMatchCaseSwitch(); this._wholeWordsOnlySwitchView = this._createWholeWordsOnlySwitch(); this._advancedOptionsCollapsibleView = this._createAdvancedOptionsCollapsible(); this._replaceAllButtonView = this._createButton({ label: e("Replace all"), class: "ck-button-replaceall", withText: true, }); this._replaceButtonView = this._createButton({ label: e("Replace"), class: "ck-button-replace", withText: true, }); this._findButtonView = this._createButton({ label: e("Find"), class: "ck-button-find ck-button-action", withText: true, }); this._actionButtonsDivView = this._createActionButtonsDiv(); this._focusTracker = new od(); this._keystrokes = new rd(); this._focusables = new Ad(); this.focusCycler = new mx({ focusables: this._focusables, focusTracker: this._focusTracker, keystrokeHandler: this._keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.children.addMany([ this._inputsDivView, this._advancedOptionsCollapsibleView, this._actionButtonsDivView, ]); this.setTemplate({ tag: "form", attributes: { class: ["ck", "ck-find-and-replace-form"], tabindex: "-1", }, children: this.children, }); } render() { super.render(); ru({ view: this }); this._initFocusCycling(); this._initKeystrokeHandling(); } destroy() { super.destroy(); this._focusTracker.destroy(); this._keystrokes.destroy(); } focus(t) { if (t === -1) { this.focusCycler.focusLast(); } else { this.focusCycler.focusFirst(); } } reset() { this._findInputView.errorText = null; this.isDirty = true; } get _textToFind() { return this._findInputView.fieldView.element.value; } get _textToReplace() { return this._replaceInputView.fieldView.element.value; } _createInputsDiv() { const t = this.locale; const e = t.t; const n = new nu(t); this._findInputView.fieldView.on("input", () => { this.isDirty = true; }); this._findPrevButtonView.delegate("execute").to(this, "findPrevious"); this._findNextButtonView.delegate("execute").to(this, "findNext"); this._findPrevButtonView .bind("isEnabled") .to(this, "_areCommandsEnabled", ({ findPrevious: t }) => t); this._findNextButtonView .bind("isEnabled") .to(this, "_areCommandsEnabled", ({ findNext: t }) => t); this._injectFindResultsCounter(); this._replaceInputView .bind("isEnabled") .to( this, "_areCommandsEnabled", this, "_searchResultsFound", ({ replace: t }, e) => t && e ); this._replaceInputView .bind("infoText") .to( this._replaceInputView, "isEnabled", this._replaceInputView, "isFocused", (t, n) => { if (t || !n) { return ""; } return e("Tip: Find some text first in order to replace it."); } ); n.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-find-and-replace-form__inputs"] }, children: [ this._findInputView, this._findPrevButtonView, this._findNextButtonView, this._replaceInputView, ], }); return n; } _onFindButtonExecute() { if (!this._textToFind) { const t = this.t; this._findInputView.errorText = t( "Text to find must not be empty." ); return; } this.isDirty = false; this.fire("findNext", { searchText: this._textToFind, matchCase: this._matchCase, wholeWords: this._wholeWordsOnly, }); } _injectFindResultsCounter() { const t = this.locale; const e = t.t; const n = this.bindTemplate; const i = new nu(this.locale); this.bind("_resultsCounterText").to( this, "highlightOffset", this, "matchCount", (t, n) => e("%0 of %1", [t, n]) ); i.setTemplate({ tag: "span", attributes: { class: ["ck", "ck-results-counter", n.if("isDirty", "ck-hidden")], }, children: [{ text: n.to("_resultsCounterText") }], }); const o = () => { const e = this._findInputView.fieldView.element; if (!e || !yc(e)) { return; } const n = new lc(i.element).width; const o = t.uiLanguageDirection === "ltr" ? "paddingRight" : "paddingLeft"; if (!n) { e.style[o] = ""; } else { e.style[o] = `calc( 2 * var(--ck-spacing-standard) + ${n}px )`; } }; this.on("change:_resultsCounterText", o, { priority: "low" }); this.on("change:isDirty", o, { priority: "low" }); this._findInputView.template.children[0].children.push(i); } _createAdvancedOptionsCollapsible() { const t = this.locale.t; const e = new py(this.locale, [ this._matchCaseSwitchView, this._wholeWordsOnlySwitchView, ]); e.set({ label: t("Advanced options"), isCollapsed: true }); return e; } _createActionButtonsDiv() { const t = new nu(this.locale); this._replaceButtonView .bind("isEnabled") .to( this, "_areCommandsEnabled", this, "_searchResultsFound", ({ replace: t }, e) => t && e ); this._replaceAllButtonView .bind("isEnabled") .to( this, "_areCommandsEnabled", this, "_searchResultsFound", ({ replaceAll: t }, e) => t && e ); this._replaceButtonView.on("execute", () => { this.fire("replace", { searchText: this._textToFind, replaceText: this._textToReplace, }); }); this._replaceAllButtonView.on("execute", () => { this.fire("replaceAll", { searchText: this._textToFind, replaceText: this._textToReplace, }); this.focus(); }); this._findButtonView.on( "execute", this._onFindButtonExecute.bind(this) ); t.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-find-and-replace-form__actions"] }, children: [ this._replaceAllButtonView, this._replaceButtonView, this._findButtonView, ], }); return t; } _createMatchCaseSwitch() { const t = this.locale.t; const e = new cy(this.locale); e.set({ label: t("Match case"), withText: true }); e.bind("isOn").to(this, "_matchCase"); e.on("execute", () => { this._matchCase = !this._matchCase; this.isDirty = true; }); return e; } _createWholeWordsOnlySwitch() { const t = this.locale.t; const e = new cy(this.locale); e.set({ label: t("Whole words only"), withText: true }); e.bind("isOn").to(this, "_wholeWordsOnly"); e.on("execute", () => { this._wholeWordsOnly = !this._wholeWordsOnly; this.isDirty = true; }); return e; } _initFocusCycling() { const t = [ this._findInputView, this._findPrevButtonView, this._findNextButtonView, this._replaceInputView, this._advancedOptionsCollapsibleView.buttonView, this._matchCaseSwitchView, this._wholeWordsOnlySwitchView, this._replaceAllButtonView, this._replaceButtonView, this._findButtonView, ]; t.forEach((t) => { this._focusables.add(t); this._focusTracker.add(t.element); }); } _initKeystrokeHandling() { const t = (t) => t.stopPropagation(); const e = (t) => { t.stopPropagation(); t.preventDefault(); }; this._keystrokes.listenTo(this.element); this._keystrokes.set("f3", (t) => { e(t); this._findNextButtonView.fire("execute"); }); this._keystrokes.set("shift+f3", (t) => { e(t); this._findPrevButtonView.fire("execute"); }); this._keystrokes.set("enter", (t) => { const n = t.target; if (n === this._findInputView.fieldView.element) { if (this._areCommandsEnabled.findNext) { this._findNextButtonView.fire("execute"); } else { this._findButtonView.fire("execute"); } e(t); } else if ( n === this._replaceInputView.fieldView.element && !this.isDirty ) { this._replaceButtonView.fire("execute"); e(t); } }); this._keystrokes.set("shift+enter", (t) => { const n = t.target; if (n !== this._findInputView.fieldView.element) { return; } if (this._areCommandsEnabled.findPrevious) { this._findPrevButtonView.fire("execute"); } else { this._findButtonView.fire("execute"); } e(t); }); this._keystrokes.set("arrowright", t); this._keystrokes.set("arrowleft", t); this._keystrokes.set("arrowup", t); this._keystrokes.set("arrowdown", t); } _createButton(t) { const e = new iy(this.locale); e.set(t); return e; } _createInputField(t, e) { const n = new Uy(this.locale, uE); n.label = t; n.class = e; return n; } } const pR = ''; class kR extends au { static get requires() { return [aS]; } static get pluginName() { return "FindAndReplaceUI"; } constructor(t) { super(t); t.config.define("findAndReplace.uiType", "dialog"); this.formView = null; } init() { const t = this.editor; const e = t.config.get("findAndReplace.uiType") === "dropdown"; const n = t.commands.get("find"); const i = this.editor.t; t.ui.componentFactory.add("findAndReplace", () => { let i; if (e) { i = this._createDropdown(); i.bind("isEnabled").to(n); } else { i = this._createDialogButtonForToolbar(); } t.keystrokes.set("Ctrl+F", (e, o) => { if (!n.isEnabled) { return; } if (i instanceof ux) { const t = i.buttonView; if (!t.isOn) { t.fire("execute"); } } else { if (i.isOn) { t.plugins.get("Dialog").view.focus(); } else { i.fire("execute"); } } o(); }); return i; }); if (!e) { t.ui.componentFactory.add("menuBar:findAndReplace", () => this._createDialogButtonForMenuBar() ); } t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: i("Find in the document"), keystroke: "CTRL+F" }, ], }); } _createDropdown() { const t = this.editor; const e = t.locale.t; const n = Zx(t.locale); n.once("change:isOpen", () => { this.formView = this._createFormView(); this.formView.children.add( new $D(t.locale, { label: e("Find and replace") }), 0 ); n.panelView.children.add(this.formView); }); n.on( "change:isOpen", (t, e, n) => { if (n) { this._setupFormView(); } else { this.fire("searchReseted"); } }, { priority: "low" } ); n.buttonView.set({ icon: pR, label: e("Find and replace"), keystroke: "CTRL+F", tooltip: true, }); return n; } _createDialogButtonForToolbar() { const t = this.editor; const e = this._createButton(iy); const n = t.plugins.get("Dialog"); e.set({ tooltip: true }); e.bind("isOn").to(n, "id", (t) => t === "findAndReplace"); e.on("execute", () => { if (e.isOn) { n.hide(); } else { this._showDialog(); } }); return e; } _createDialogButtonForMenuBar() { const t = this._createButton(wM); const e = this.editor.plugins.get("Dialog"); t.on("execute", () => { if (e.id === "findAndReplace") { e.hide(); return; } this._showDialog(); }); return t; } _createButton(t) { const e = this.editor; const n = e.commands.get("find"); const i = new t(e.locale); const o = e.locale.t; i.bind("isEnabled").to(n); i.set({ icon: pR, label: o("Find and replace"), keystroke: "CTRL+F", }); return i; } _showDialog() { const t = this.editor; const e = t.plugins.get("Dialog"); const n = t.locale.t; if (!this.formView) { this.formView = this._createFormView(); } e.show({ id: "findAndReplace", title: n("Find and replace"), content: this.formView, position: nS.EDITOR_TOP_SIDE, onShow: () => { this._setupFormView(); }, onHide: () => { this.fire("searchReseted"); }, }); } _createFormView() { const t = this.editor; const e = new (ou(fR))(t.locale); const n = t.commands; const i = this.editor.plugins.get("FindAndReplaceEditing"); const o = i.state; e.bind("highlightOffset").to(o, "highlightedOffset"); e.listenTo(o.results, "change", () => { e.matchCount = o.results.length; }); const r = n.get("findNext"); const s = n.get("findPrevious"); const a = n.get("replace"); const c = n.get("replaceAll"); e.bind("_areCommandsEnabled").to( r, "isEnabled", s, "isEnabled", a, "isEnabled", c, "isEnabled", (t, e, n, i) => ({ findNext: t, findPrevious: e, replace: n, replaceAll: i, }) ); e.delegate("findNext", "findPrevious", "replace", "replaceAll").to( this ); e.on("change:isDirty", (t, e, n) => { if (n) { this.fire("searchReseted"); } }); return e; } _setupFormView() { this.formView.disableCssTransitions(); this.formView.reset(); this.formView._findInputView.fieldView.select(); this.formView.enableCssTransitions(); } } class bR extends lu { constructor(t, e) { super(t); this.isEnabled = true; this.affectsData = false; this._state = e; } execute(t, { matchCase: e, wholeWords: n } = {}) { const { editor: i } = this; const { model: o } = i; const r = i.plugins.get("FindAndReplaceUtils"); let s; if (typeof t === "string") { s = r.findByTextCallback(t, { matchCase: e, wholeWords: n }); this._state.searchText = t; } else { s = t; } const a = o.document .getRootNames() .reduce( (t, e) => r.updateFindResultFromRange( o.createRangeIn(o.document.getRoot(e)), o, s, t ), null ); this._state.clear(o); this._state.results.addMany(a); this._state.highlightedResult = a.get(0); if (typeof t === "string") { this._state.searchText = t; } if (s) { this._state.lastSearchCallback = s; } this._state.matchCase = !!e; this._state.matchWholeWords = !!n; return { results: a, findCallback: s }; } } class wR extends lu { constructor(t, e) { super(t); this.isEnabled = true; this._state = e; this._isEnabledBasedOnSelection = false; } _replace(t, e) { const { model: n } = this.editor; const i = e.marker.getRange(); if (!n.canEditAt(i)) { return; } n.change((o) => { if (i.root.rootName === "$graveyard") { this._state.results.remove(e); return; } let r = {}; for (const t of i.getItems()) { if (t.is("$text") || t.is("$textProxy")) { r = t.getAttributes(); break; } } n.insertContent(o.createText(t, r), i); if (this._state.results.has(e)) { this._state.results.remove(e); } }); } } class AR extends wR { execute(t, e) { this._replace(t, e); } } class _R extends wR { execute(t, e) { const { editor: n } = this; const { model: i } = n; const o = n.plugins.get("FindAndReplaceUtils"); const r = e instanceof nd ? e : i.document .getRootNames() .reduce( (t, n) => o.updateFindResultFromRange( i.createRangeIn(i.document.getRoot(n)), i, o.findByTextCallback(e, this._state), t ), null ); if (r.length) { i.change(() => { [...r].forEach((e) => { this._replace(t, e); }); }); } } } class CR extends lu { constructor(t, e) { super(t); this.affectsData = false; this._state = e; this.isEnabled = false; this.listenTo(this._state.results, "change", () => { this.isEnabled = this._state.results.length > 1; }); } refresh() { this.isEnabled = this._state.results.length > 1; } execute() { const t = this._state.results; const e = t.getIndex(this._state.highlightedResult); const n = e + 1 >= t.length ? 0 : e + 1; this._state.highlightedResult = this._state.results.get(n); } } class vR extends CR { execute() { const t = this._state.results; const e = t.getIndex(this._state.highlightedResult); const n = e - 1 < 0 ? this._state.results.length - 1 : e - 1; this._state.highlightedResult = this._state.results.get(n); } } class yR extends mt() { constructor(t) { super(); this.set("results", new nd()); this.set("highlightedResult", null); this.set("highlightedOffset", 0); this.set("searchText", ""); this.set("replaceText", ""); this.set("lastSearchCallback", null); this.set("matchCase", false); this.set("matchWholeWords", false); this.results.on("change", (e, { removed: n, index: i }) => { if (Array.from(n).length) { let e = false; t.change((i) => { for (const o of n) { if (this.highlightedResult === o) { e = true; } if (t.markers.has(o.marker.name)) { i.removeMarker(o.marker); } } }); if (e) { const t = i >= this.results.length ? 0 : i; this.highlightedResult = this.results.get(t); } } }); this.on("change:highlightedResult", () => { this.refreshHighlightOffset(); }); } clear(t) { this.searchText = ""; t.change((e) => { if (this.highlightedResult) { const n = this.highlightedResult.marker.name.split(":")[1]; const i = t.markers.get(`findResultHighlighted:${n}`); if (i) { e.removeMarker(i); } } [...this.results].forEach(({ marker: t }) => { e.removeMarker(t); }); }); this.results.clear(); } refreshHighlightOffset() { const { highlightedResult: t, results: e } = this; const n = { before: -1, same: 0, after: 1, different: 1 }; if (t) { this.highlightedOffset = Array.from(e) .sort( (t, e) => n[t.marker.getStart().compareWith(e.marker.getStart())] ) .indexOf(t) + 1; } else { this.highlightedOffset = 0; } } } class xR extends au { static get pluginName() { return "FindAndReplaceUtils"; } updateFindResultFromRange(t, e, n, i) { const o = i || new nd(); const r = (t) => o.find((e) => { const { marker: n } = e; const i = n.getRange(); const o = t.getRange(); return i.isEqual(o); }); e.change((i) => { [...t].forEach(({ type: t, item: s }) => { if (t === "elementStart") { if (e.schema.checkChild(s, "$text")) { const t = n({ item: s, text: this.rangeToText(e.createRangeIn(s)), }); if (!t) { return; } t.forEach((t) => { const e = `findResult:${T()}`; const n = i.addMarker(e, { usingOperation: false, affectsData: false, range: i.createRange( i.createPositionAt(s, t.start), i.createPositionAt(s, t.end) ), }); const a = ER(o, n); if (!r(n)) { o.add({ id: e, label: t.label, marker: n }, a); } }); } } }); }); return o; } rangeToText(t) { return Array.from(t.getItems()).reduce((t, e) => { if (!(e.is("$text") || e.is("$textProxy"))) { return `${t}\n`; } return t + e.data; }, ""); } findByTextCallback(t, e) { let n = "gu"; if (!e.matchCase) { n += "i"; } let i = `(${PT(t)})`; if (e.wholeWords) { const e = "[^a-zA-ZÀ-ɏḀ-ỿ]"; if (!new RegExp("^" + e).test(t)) { i = `(^|${e}|_)${i}`; } if (!new RegExp(e + "$").test(t)) { i = `${i}(?=_|${e}|$)`; } } const o = new RegExp(i, n); function r({ text: t }) { const e = [...t.matchAll(o)]; return e.map(DR); } return r; } } function ER(t, e) { const n = t.find(({ marker: t }) => e.getStart().isBefore(t.getStart()) ); return n ? t.getIndex(n) : t.length; } function DR(t) { const e = t.length - 1; let n = t.index; if (t.length === 3) { n += t[1].length; } return { label: t[e], start: n, end: n + t[e].length }; } var SR = n(1959); var TR = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; TR.insert = "head"; TR.singleton = true; var BR = Zd()(SR.A, TR); const MR = SR.A.locals || {}; const IR = "ck-find-result_selected"; class LR extends au { constructor() { super(...arguments); this._onDocumentChange = () => { const t = new Set(); const e = new Set(); const n = this.editor.model; const { results: i } = this.state; const o = n.document.differ.getChanges(); const r = n.document.differ.getChangedMarkers(); o.forEach((i) => { if (!i.position) { return; } if ( i.name === "$text" || (i.position.nodeAfter && n.schema.isInline(i.position.nodeAfter)) ) { t.add(i.position.parent); [...n.markers.getMarkersAtPosition(i.position)].forEach((t) => { e.add(t.name); }); } else if (i.type === "insert" && i.position.nodeAfter) { t.add(i.position.nodeAfter); } }); r.forEach(({ name: t, data: { newRange: n } }) => { if (n && n.start.root.rootName === "$graveyard") { e.add(t); } }); t.forEach((t) => { const i = [ ...n.markers.getMarkersIntersectingRange(n.createRangeIn(t)), ]; i.forEach((t) => e.add(t.name)); }); e.forEach((t) => { if (!i.has(t)) { return; } if (i.get(t) === this.state.highlightedResult) { this.state.highlightedResult = null; } i.remove(t); }); const s = []; const a = this.editor.plugins.get("FindAndReplaceUtils"); t.forEach((t) => { const e = a.updateFindResultFromRange( n.createRangeOn(t), n, this.state.lastSearchCallback, i ); s.push(...e); }); r.forEach((t) => { if (t.data.newRange) { const e = a.updateFindResultFromRange( t.data.newRange, n, this.state.lastSearchCallback, i ); s.push(...e); } }); if (!this.state.highlightedResult && s.length) { this.state.highlightedResult = s[0]; } else { this.state.refreshHighlightOffset(); } }; } static get requires() { return [xR]; } static get pluginName() { return "FindAndReplaceEditing"; } init() { this.state = new yR(this.editor.model); this.set("_isSearchActive", false); this._defineConverters(); this._defineCommands(); this.listenTo( this.state, "change:highlightedResult", (t, e, n, i) => { const { model: o } = this.editor; o.change((t) => { if (i) { const e = i.marker.name.split(":")[1]; const n = o.markers.get(`findResultHighlighted:${e}`); if (n) { t.removeMarker(n); } } if (n) { const e = n.marker.name.split(":")[1]; t.addMarker(`findResultHighlighted:${e}`, { usingOperation: false, affectsData: false, range: n.marker.getRange(), }); } }); } ); const t = (t, e, n) => { if (n) { const t = this.editor.editing.view.domConverter; const e = this.editor.editing.mapper.toViewRange( n.marker.getRange() ); Mc({ target: t.viewRangeToDom(e), viewportOffset: 40 }); } }; const e = Zg(t.bind(this), 32); this.listenTo(this.state, "change:highlightedResult", e, { priority: "low", }); this.listenTo(this.editor, "destroy", e.cancel); this.on("change:_isSearchActive", (t, e, n) => { if (n) { this.listenTo( this.editor.model.document, "change:data", this._onDocumentChange ); } else { this.stopListening( this.editor.model.document, "change:data", this._onDocumentChange ); } }); } find(t, e) { this._isSearchActive = true; this.editor.execute("find", t, e); return this.state.results; } stop() { this.state.clear(this.editor.model); this._isSearchActive = false; } _defineCommands() { this.editor.commands.add("find", new bR(this.editor, this.state)); this.editor.commands.add("findNext", new CR(this.editor, this.state)); this.editor.commands.add( "findPrevious", new vR(this.editor, this.state) ); this.editor.commands.add("replace", new AR(this.editor, this.state)); this.editor.commands.add( "replaceAll", new _R(this.editor, this.state) ); } _defineConverters() { const { editor: t } = this; t.conversion.for("editingDowncast").markerToHighlight({ model: "findResult", view: ({ markerName: t }) => { const [, e] = t.split(":"); return { name: "span", classes: ["ck-find-result"], attributes: { "data-find-result": e }, }; }, }); t.conversion.for("editingDowncast").markerToHighlight({ model: "findResultHighlighted", view: ({ markerName: t }) => { const [, e] = t.split(":"); return { name: "span", classes: [IR], attributes: { "data-find-result": e }, }; }, }); } } class NR extends au { static get requires() { return [LR, kR]; } static get pluginName() { return "FindAndReplace"; } init() { const t = this.editor.plugins.get("FindAndReplaceUI"); const e = this.editor.plugins.get("FindAndReplaceEditing"); const n = e.state; t.on("findNext", (t, i) => { if (i) { n.searchText = i.searchText; e.find(i.searchText, i); } else { this.editor.execute("findNext"); } }); t.on("findPrevious", (t, i) => { if (i && n.searchText !== i.searchText) { e.find(i.searchText); } else { this.editor.execute("findPrevious"); } }); t.on("replace", (t, i) => { if (n.searchText !== i.searchText) { e.find(i.searchText); } const o = n.highlightedResult; if (o) { this.editor.execute("replace", i.replaceText, o); } }); t.on("replaceAll", (t, i) => { if (n.searchText !== i.searchText) { e.find(i.searchText); } this.editor.execute("replaceAll", i.replaceText, n.results); }); t.on("searchReseted", () => { n.clear(this.editor.model); e.stop(); }); } } class zR extends lu { constructor(t, e) { super(t); this.attributeKey = e; } refresh() { const t = this.editor.model; const e = t.document; this.value = e.selection.getAttribute(this.attributeKey); this.isEnabled = t.schema.checkAttributeInSelection( e.selection, this.attributeKey ); } execute(t = {}) { const e = this.editor.model; const n = e.document; const i = n.selection; const o = t.value; const r = t.batch; const s = (t) => { if (i.isCollapsed) { if (o) { t.setSelectionAttribute(this.attributeKey, o); } else { t.removeSelectionAttribute(this.attributeKey); } } else { const n = e.schema.getValidRanges( i.getRanges(), this.attributeKey ); for (const e of n) { if (o) { t.setAttribute(this.attributeKey, o, e); } else { t.removeAttribute(this.attributeKey, e); } } } }; if (r) { e.enqueueChange(r, (t) => { s(t); }); } else { e.change((t) => { s(t); }); } } } const PR = "fontSize"; const RR = "fontFamily"; const VR = "fontColor"; const OR = "fontBackgroundColor"; function FR(t, e) { const n = { model: { key: t, values: [] }, view: {}, upcastAlso: {} }; for (const t of e) { n.model.values.push(t.model); n.view[t.model] = t.view; if (t.upcastAlso) { n.upcastAlso[t.model] = t.upcastAlso; } } return n; } function jR(t) { return (e) => $R(e.getStyle(t)); } function HR(t) { return (e, { writer: n }) => n.createAttributeElement( "span", { style: `${t}:${e}` }, { priority: 7 } ); } function UR({ dropdownView: t, colors: e, columns: n, removeButtonLabel: i, colorPickerLabel: o, documentColorsLabel: r, documentColorsCount: s, colorPickerViewConfig: a, }) { const c = t.locale; const l = new RD(c, { colors: e, columns: n, removeButtonLabel: i, colorPickerLabel: o, documentColorsLabel: r, documentColorsCount: s, colorPickerViewConfig: a, }); t.colorSelectorView = l; t.panelView.children.add(l); return l; } function $R(t) { return t.replace(/\s/g, ""); } class qR extends zR { constructor(t) { super(t, RR); } } function WR(t) { return t.map(GR).filter((t) => t !== undefined); } function GR(t) { if (typeof t === "object") { return t; } if (t === "default") { return { title: "Default", model: undefined }; } if (typeof t !== "string") { return undefined; } return KR(t); } function KR(t) { const e = t.replace(/"|'/g, "").split(","); const n = e[0]; const i = e.map(YR).join(", "); return { title: n, model: i, view: { name: "span", styles: { "font-family": i }, priority: 7 }, }; } function YR(t) { t = t.trim(); if (t.indexOf(" ") > 0) { t = `'${t}'`; } return t; } class QR extends au { static get pluginName() { return "FontFamilyEditing"; } constructor(t) { super(t); t.config.define(RR, { options: [ "default", "Arial, Helvetica, sans-serif", "Courier New, Courier, monospace", "Georgia, serif", "Lucida Sans Unicode, Lucida Grande, sans-serif", "Tahoma, Geneva, sans-serif", "Times New Roman, Times, serif", "Trebuchet MS, Helvetica, sans-serif", "Verdana, Geneva, sans-serif", ], supportAllValues: false, }); } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: RR }); t.model.schema.setAttributeProperties(RR, { isFormatting: true, copyOnEnter: true, }); const e = WR(t.config.get("fontFamily.options")).filter( (t) => t.model ); const n = FR(RR, e); if (t.config.get("fontFamily.supportAllValues")) { this._prepareAnyValueConverters(); this._prepareCompatibilityConverter(); } else { t.conversion.attributeToElement(n); } t.commands.add(RR, new qR(t)); } _prepareAnyValueConverters() { const t = this.editor; t.conversion .for("downcast") .attributeToElement({ model: RR, view: (t, { writer: e }) => e.createAttributeElement( "span", { style: "font-family:" + t }, { priority: 7 } ), }); t.conversion .for("upcast") .elementToAttribute({ model: { key: RR, value: (t) => t.getStyle("font-family") }, view: { name: "span", styles: { "font-family": /.*/ } }, }); } _prepareCompatibilityConverter() { const t = this.editor; t.conversion .for("upcast") .elementToAttribute({ view: { name: "font", attributes: { face: /.*/ } }, model: { key: RR, value: (t) => t.getAttribute("face") }, }); } } const ZR = ''; class JR extends au { static get pluginName() { return "FontFamilyUI"; } init() { const t = this.editor; const e = t.t; const n = this._getLocalizedOptions(); const i = t.commands.get(RR); const o = e("Font Family"); const r = XR(n, i); t.ui.componentFactory.add(RR, (e) => { const n = Zx(e); tE(n, r, { role: "menu", ariaLabel: o }); n.buttonView.set({ label: o, icon: ZR, tooltip: true }); n.extendTemplate({ attributes: { class: "ck-font-family-dropdown" }, }); n.bind("isEnabled").to(i); this.listenTo(n, "execute", (e) => { t.execute(e.source.commandName, { value: e.source.commandParam }); t.editing.view.focus(); }); return n; }); t.ui.componentFactory.add(`menuBar:${RR}`, (e) => { const n = new mM(e); n.buttonView.set({ label: o, icon: ZR }); n.bind("isEnabled").to(i); const s = new gM(e); for (const i of r) { const o = new NB(e, n); const r = new wM(e); r.bind(...Object.keys(i.model)).to(i.model); r.bind("ariaChecked").to(r, "isOn"); r.delegate("execute").to(n); r.on("execute", () => { t.execute(i.model.commandName, { value: i.model.commandParam }); t.editing.view.focus(); }); o.children.add(r); s.items.add(o); } n.panelView.children.add(s); return n; }); } _getLocalizedOptions() { const t = this.editor; const e = t.t; const n = WR(t.config.get(RR).options); return n.map((t) => { if (t.title === "Default") { t.title = e("Default"); } return t; }); } } function XR(t, e) { const n = new nd(); for (const i of t) { const t = { type: "button", model: new uT({ commandName: RR, commandParam: i.model, label: i.title, role: "menuitemradio", withText: true, }), }; t.model.bind("isOn").to(e, "value", (t) => { if (t === i.model) { return true; } if (!t || !i.model) { return false; } return ( t.split(",")[0].replace(/'/g, "").toLowerCase() === i.model.toLowerCase() ); }); if (i.view && typeof i.view !== "string" && i.view.styles) { t.model.set( "labelStyle", `font-family: ${i.view.styles["font-family"]}` ); } n.add(t); } return n; } class tV extends au { static get requires() { return [QR, JR]; } static get pluginName() { return "FontFamily"; } } class eV extends zR { constructor(t) { super(t, PR); } } function nV(t) { return t.map((t) => oV(t)).filter((t) => t !== undefined); } const iV = { get tiny() { return { title: "Tiny", model: "tiny", view: { name: "span", classes: "text-tiny", priority: 7 }, }; }, get small() { return { title: "Small", model: "small", view: { name: "span", classes: "text-small", priority: 7 }, }; }, get big() { return { title: "Big", model: "big", view: { name: "span", classes: "text-big", priority: 7 }, }; }, get huge() { return { title: "Huge", model: "huge", view: { name: "span", classes: "text-huge", priority: 7 }, }; }, }; function oV(t) { if (typeof t === "number") { t = String(t); } if (typeof t === "object" && cV(t)) { return sV(t); } const e = aV(t); if (e) { return sV(e); } if (t === "default") { return { model: undefined, title: "Default" }; } if (lV(t)) { return undefined; } return rV(t); } function rV(t) { if (typeof t === "string") { t = { title: t, model: `${parseFloat(t)}px` }; } t.view = { name: "span", styles: { "font-size": t.model } }; return sV(t); } function sV(t) { if (t.view && typeof t.view !== "string" && !t.view.priority) { t.view.priority = 7; } return t; } function aV(t) { return typeof t === "string" ? iV[t] : iV[t.model]; } function cV(t) { return t.title && t.model && t.view; } function lV(t) { let e; if (typeof t === "object") { if (!t.model) { throw new N("font-size-invalid-definition", null, t); } else { e = parseFloat(t.model); } } else { e = parseFloat(t); } return isNaN(e); } const dV = [ "x-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large", ]; class uV extends au { static get pluginName() { return "FontSizeEditing"; } constructor(t) { super(t); t.config.define(PR, { options: ["tiny", "small", "default", "big", "huge"], supportAllValues: false, }); } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: PR }); t.model.schema.setAttributeProperties(PR, { isFormatting: true, copyOnEnter: true, }); const e = t.config.get("fontSize.supportAllValues"); const n = nV(this.editor.config.get("fontSize.options")).filter( (t) => t.model ); const i = FR(PR, n); if (e) { this._prepareAnyValueConverters(i); this._prepareCompatibilityConverter(); } else { t.conversion.attributeToElement(i); } t.commands.add(PR, new eV(t)); } _prepareAnyValueConverters(t) { const e = this.editor; const n = t.model.values.filter( (t) => !n_(String(t)) && !o_(String(t)) ); if (n.length) { throw new N("font-size-invalid-use-of-named-presets", null, { presets: n, }); } e.conversion.for("downcast").attributeToElement({ model: PR, view: (t, { writer: e }) => { if (!t) { return; } return e.createAttributeElement( "span", { style: "font-size:" + t }, { priority: 7 } ); }, }); e.conversion .for("upcast") .elementToAttribute({ model: { key: PR, value: (t) => t.getStyle("font-size") }, view: { name: "span", styles: { "font-size": /.*/ } }, }); } _prepareCompatibilityConverter() { const t = this.editor; t.conversion.for("upcast").elementToAttribute({ view: { name: "font", attributes: { size: /^[+-]?\d{1,3}$/ } }, model: { key: PR, value: (t) => { const e = t.getAttribute("size"); const n = e[0] === "-" || e[0] === "+"; let i = parseInt(e, 10); if (n) { i = 3 + i; } const o = dV.length - 1; const r = Math.min(Math.max(i, 0), o); return dV[r]; }, }, }); } } var hV = n(7724); var mV = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; mV.insert = "head"; mV.singleton = true; var gV = Zd()(hV.A, mV); const fV = hV.A.locals || {}; const pV = ''; class kV extends au { static get pluginName() { return "FontSizeUI"; } init() { const t = this.editor; const e = t.t; const n = this._getLocalizedOptions(); const i = t.commands.get(PR); const o = e("Font Size"); const r = bV(n, i); t.ui.componentFactory.add(PR, (e) => { const n = Zx(e); tE(n, r, { role: "menu", ariaLabel: o }); n.buttonView.set({ label: o, icon: pV, tooltip: true }); n.extendTemplate({ attributes: { class: ["ck-font-size-dropdown"] }, }); n.bind("isEnabled").to(i); this.listenTo(n, "execute", (e) => { t.execute(e.source.commandName, { value: e.source.commandParam }); t.editing.view.focus(); }); return n; }); t.ui.componentFactory.add(`menuBar:${PR}`, (e) => { const n = new mM(e); n.buttonView.set({ label: o, icon: pV }); n.bind("isEnabled").to(i); const s = new gM(e); for (const i of r) { const o = new NB(e, n); const r = new wM(e); r.bind(...Object.keys(i.model)).to(i.model); r.bind("ariaChecked").to(r, "isOn"); r.delegate("execute").to(n); r.on("execute", () => { t.execute(i.model.commandName, { value: i.model.commandParam }); t.editing.view.focus(); }); o.children.add(r); s.items.add(o); } n.panelView.children.add(s); return n; }); } _getLocalizedOptions() { const t = this.editor; const e = t.t; const n = { Default: e("Default"), Tiny: e("Tiny"), Small: e("Small"), Big: e("Big"), Huge: e("Huge"), }; const i = nV(t.config.get(PR).options); return i.map((t) => { const e = n[t.title]; if (e && e != t.title) { t = Object.assign({}, t, { title: e }); } return t; }); } } function bV(t, e) { const n = new nd(); for (const i of t) { const t = { type: "button", model: new uT({ commandName: PR, commandParam: i.model, label: i.title, class: "ck-fontsize-option", role: "menuitemradio", withText: true, }), }; if (i.view && typeof i.view !== "string") { if (i.view.styles) { t.model.set( "labelStyle", `font-size:${i.view.styles["font-size"]}` ); } if (i.view.classes) { t.model.set("class", `${t.model.class} ${i.view.classes}`); } } t.model.bind("isOn").to(e, "value", (t) => t === i.model); n.add(t); } return n; } class wV extends au { static get requires() { return [uV, kV]; } static get pluginName() { return "FontSize"; } normalizeSizeOptions(t) { return nV(t); } } class AV extends zR { constructor(t) { super(t, VR); } } class _V extends au { static get pluginName() { return "FontColorEditing"; } constructor(t) { super(t); t.config.define(VR, { colors: [ { color: "hsl(0, 0%, 0%)", label: "Black" }, { color: "hsl(0, 0%, 30%)", label: "Dim grey" }, { color: "hsl(0, 0%, 60%)", label: "Grey" }, { color: "hsl(0, 0%, 90%)", label: "Light grey" }, { color: "hsl(0, 0%, 100%)", label: "White", hasBorder: true }, { color: "hsl(0, 75%, 60%)", label: "Red" }, { color: "hsl(30, 75%, 60%)", label: "Orange" }, { color: "hsl(60, 75%, 60%)", label: "Yellow" }, { color: "hsl(90, 75%, 60%)", label: "Light green" }, { color: "hsl(120, 75%, 60%)", label: "Green" }, { color: "hsl(150, 75%, 60%)", label: "Aquamarine" }, { color: "hsl(180, 75%, 60%)", label: "Turquoise" }, { color: "hsl(210, 75%, 60%)", label: "Light blue" }, { color: "hsl(240, 75%, 60%)", label: "Blue" }, { color: "hsl(270, 75%, 60%)", label: "Purple" }, ], columns: 5, }); t.conversion .for("upcast") .elementToAttribute({ view: { name: "span", styles: { color: /[\s\S]+/ } }, model: { key: VR, value: jR("color") }, }); t.conversion .for("upcast") .elementToAttribute({ view: { name: "font", attributes: { color: /^#?\w+$/ } }, model: { key: VR, value: (t) => t.getAttribute("color") }, }); t.conversion .for("downcast") .attributeToElement({ model: VR, view: HR("color") }); t.commands.add(VR, new AV(t)); t.model.schema.extend("$text", { allowAttributes: VR }); t.model.schema.setAttributeProperties(VR, { isFormatting: true, copyOnEnter: true, }); } } class CV extends au { constructor( t, { commandName: e, componentName: n, icon: i, dropdownLabel: o } ) { super(t); this.commandName = e; this.componentName = n; this.icon = i; this.dropdownLabel = o; this.columns = t.config.get(`${this.componentName}.columns`); } init() { const t = this.editor; const e = t.locale; const n = e.t; const i = t.commands.get(this.commandName); const o = t.config.get(this.componentName); const r = by(o.colors); const s = ky(e, r); const a = o.documentColors; const c = o.colorPicker !== false; t.ui.componentFactory.add(this.componentName, (e) => { const r = Zx(e); let l = false; const d = UR({ dropdownView: r, colors: s.map((t) => ({ label: t.label, color: t.model, options: { hasBorder: t.hasBorder }, })), columns: this.columns, removeButtonLabel: n("Remove color"), colorPickerLabel: n("Color picker"), documentColorsLabel: a !== 0 ? n("Document colors") : "", documentColorsCount: a === undefined ? this.columns : a, colorPickerViewConfig: c ? o.colorPicker || {} : false, }); d.bind("selectedColor").to(i, "value"); r.buttonView.set({ label: this.dropdownLabel, icon: this.icon, tooltip: true, }); r.extendTemplate({ attributes: { class: "ck-color-ui-dropdown" } }); r.bind("isEnabled").to(i); d.on("execute", (e, n) => { if (r.isOpen) { t.execute(this.commandName, { value: n.value, batch: this._undoStepBatch, }); } if (n.source !== "colorPicker") { t.editing.view.focus(); } if (n.source === "colorPickerSaveButton") { r.isOpen = false; } }); d.on("colorPicker:show", () => { this._undoStepBatch = t.model.createBatch(); }); d.on("colorPicker:cancel", () => { if (this._undoStepBatch.operations.length) { r.isOpen = false; t.execute("undo", this._undoStepBatch); } t.editing.view.focus(); }); r.on("change:isOpen", (e, n, i) => { if (!l) { l = true; r.colorSelectorView.appendUI(); } if (i) { if (a !== 0) { d.updateDocumentColors(t.model, this.componentName); } d.updateSelectedColors(); d.showColorGridsFragment(); } }); nE(r, () => r.colorSelectorView.colorGridsFragmentView.staticColorsGrid.items.find( (t) => t.isOn ) ); return r; }); t.ui.componentFactory.add(`menuBar:${this.componentName}`, (e) => { const o = new mM(e); o.buttonView.set({ label: this.dropdownLabel, icon: this.icon }); o.bind("isEnabled").to(i); let r = false; const c = new RD(e, { colors: s.map((t) => ({ label: t.label, color: t.model, options: { hasBorder: t.hasBorder }, })), columns: this.columns, removeButtonLabel: n("Remove color"), colorPickerLabel: n("Color picker"), documentColorsLabel: a !== 0 ? n("Document colors") : "", documentColorsCount: a === undefined ? this.columns : a, colorPickerViewConfig: false, }); c.bind("selectedColor").to(i, "value"); c.delegate("execute").to(o); c.on("execute", (e, n) => { t.execute(this.commandName, { value: n.value, batch: this._undoStepBatch, }); t.editing.view.focus(); }); o.on("change:isOpen", (e, n, i) => { if (!r) { r = true; c.appendUI(); } if (i) { if (a !== 0) { c.updateDocumentColors(t.model, this.componentName); } c.updateSelectedColors(); c.showColorGridsFragment(); } }); o.panelView.children.add(c); return o; }); } } const vV = ''; class yV extends CV { constructor(t) { const e = t.locale.t; super(t, { commandName: VR, componentName: VR, icon: vV, dropdownLabel: e("Font Color"), }); } static get pluginName() { return "FontColorUI"; } } class xV extends au { static get requires() { return [_V, yV]; } static get pluginName() { return "FontColor"; } } class EV extends zR { constructor(t) { super(t, OR); } } class DV extends au { static get pluginName() { return "FontBackgroundColorEditing"; } constructor(t) { super(t); t.config.define(OR, { colors: [ { color: "hsl(0, 0%, 0%)", label: "Black" }, { color: "hsl(0, 0%, 30%)", label: "Dim grey" }, { color: "hsl(0, 0%, 60%)", label: "Grey" }, { color: "hsl(0, 0%, 90%)", label: "Light grey" }, { color: "hsl(0, 0%, 100%)", label: "White", hasBorder: true }, { color: "hsl(0, 75%, 60%)", label: "Red" }, { color: "hsl(30, 75%, 60%)", label: "Orange" }, { color: "hsl(60, 75%, 60%)", label: "Yellow" }, { color: "hsl(90, 75%, 60%)", label: "Light green" }, { color: "hsl(120, 75%, 60%)", label: "Green" }, { color: "hsl(150, 75%, 60%)", label: "Aquamarine" }, { color: "hsl(180, 75%, 60%)", label: "Turquoise" }, { color: "hsl(210, 75%, 60%)", label: "Light blue" }, { color: "hsl(240, 75%, 60%)", label: "Blue" }, { color: "hsl(270, 75%, 60%)", label: "Purple" }, ], columns: 5, }); t.data.addStyleProcessorRules(b_); t.conversion .for("upcast") .elementToAttribute({ view: { name: "span", styles: { "background-color": /[\s\S]+/ } }, model: { key: OR, value: jR("background-color") }, }); t.conversion .for("downcast") .attributeToElement({ model: OR, view: HR("background-color") }); t.commands.add(OR, new EV(t)); t.model.schema.extend("$text", { allowAttributes: OR }); t.model.schema.setAttributeProperties(OR, { isFormatting: true, copyOnEnter: true, }); } } const SV = ''; class TV extends CV { constructor(t) { const e = t.locale.t; super(t, { commandName: OR, componentName: OR, icon: SV, dropdownLabel: e("Font Background Color"), }); } static get pluginName() { return "FontBackgroundColorUI"; } } class BV extends au { static get requires() { return [DV, TV]; } static get pluginName() { return "FontBackgroundColor"; } } class MV extends (null && Plugin) { static get requires() { return [FontFamily, FontSize, FontColor, FontBackgroundColor]; } static get pluginName() { return "Font"; } } class IV extends lu { refresh() { const t = this.editor.model; const e = t.document; this.value = e.selection.getAttribute("highlight"); this.isEnabled = t.schema.checkAttributeInSelection( e.selection, "highlight" ); } execute(t = {}) { const e = this.editor.model; const n = e.document; const i = n.selection; const o = t.value; e.change((t) => { if (i.isCollapsed) { const e = i.getFirstPosition(); if (i.hasAttribute("highlight")) { const n = (t) => t.item.hasAttribute("highlight") && t.item.getAttribute("highlight") === this.value; const i = e.getLastMatchingPosition(n, { direction: "backward", }); const r = e.getLastMatchingPosition(n); const s = t.createRange(i, r); if (!o || this.value === o) { if (!e.isEqual(r)) { t.removeAttribute("highlight", s); } t.removeSelectionAttribute("highlight"); } else { if (!e.isEqual(r)) { t.setAttribute("highlight", o, s); } t.setSelectionAttribute("highlight", o); } } else if (o) { t.setSelectionAttribute("highlight", o); } } else { const n = e.schema.getValidRanges(i.getRanges(), "highlight"); for (const e of n) { if (o) { t.setAttribute("highlight", o, e); } else { t.removeAttribute("highlight", e); } } } }); } } class LV extends au { static get pluginName() { return "HighlightEditing"; } constructor(t) { super(t); t.config.define("highlight", { options: [ { model: "yellowMarker", class: "marker-yellow", title: "Yellow marker", color: "var(--ck-highlight-marker-yellow)", type: "marker", }, { model: "greenMarker", class: "marker-green", title: "Green marker", color: "var(--ck-highlight-marker-green)", type: "marker", }, { model: "pinkMarker", class: "marker-pink", title: "Pink marker", color: "var(--ck-highlight-marker-pink)", type: "marker", }, { model: "blueMarker", class: "marker-blue", title: "Blue marker", color: "var(--ck-highlight-marker-blue)", type: "marker", }, { model: "redPen", class: "pen-red", title: "Red pen", color: "var(--ck-highlight-pen-red)", type: "pen", }, { model: "greenPen", class: "pen-green", title: "Green pen", color: "var(--ck-highlight-pen-green)", type: "pen", }, ], }); } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: "highlight" }); const e = t.config.get("highlight.options"); t.conversion.attributeToElement(NV(e)); t.commands.add("highlight", new IV(t)); } } function NV(t) { const e = { model: { key: "highlight", values: [] }, view: {} }; for (const n of t) { e.model.values.push(n.model); e.view[n.model] = { name: "mark", classes: n.class }; } return e; } const zV = ''; const PV = ''; var RV = n(8547); var VV = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; VV.insert = "head"; VV.singleton = true; var OV = Zd()(RV.A, VV); const FV = RV.A.locals || {}; class jV extends au { get localizedOptionTitles() { const t = this.editor.t; return { "Yellow marker": t("Yellow marker"), "Green marker": t("Green marker"), "Pink marker": t("Pink marker"), "Blue marker": t("Blue marker"), "Red pen": t("Red pen"), "Green pen": t("Green pen"), }; } static get pluginName() { return "HighlightUI"; } init() { const t = this.editor.config.get("highlight.options"); for (const e of t) { this._addHighlighterButton(e); } this._addRemoveHighlightButton(); this._addDropdown(t); this._addMenuBarButton(t); } _addRemoveHighlightButton() { const t = this.editor.t; const e = this.editor.commands.get("highlight"); this._addButton( "removeHighlight", t("Remove highlight"), Bv.eraser, null, (t) => { t.bind("isEnabled").to(e, "isEnabled"); } ); } _addHighlighterButton(t) { const e = this.editor.commands.get("highlight"); this._addButton( "highlight:" + t.model, t.title, UV(t.type), t.model, n ); function n(n) { n.bind("isEnabled").to(e, "isEnabled"); n.bind("isOn").to(e, "value", (e) => e === t.model); n.iconView.fillColor = t.color; n.isToggleable = true; } } _addButton(t, e, n, i, o) { const r = this.editor; r.ui.componentFactory.add(t, (t) => { const s = new iy(t); const a = this.localizedOptionTitles[e] ? this.localizedOptionTitles[e] : e; s.set({ label: a, icon: n, tooltip: true }); s.on("execute", () => { r.execute("highlight", { value: i }); r.editing.view.focus(); }); o(s); return s; }); } _addDropdown(t) { const e = this.editor; const n = e.t; const i = e.ui.componentFactory; const o = t[0]; const r = t.reduce((t, e) => { t[e.model] = e; return t; }, {}); i.add("highlight", (s) => { const a = e.commands.get("highlight"); const c = Zx(s, Hx); const l = c.buttonView; l.set({ label: n("Highlight"), tooltip: true, lastExecuted: o.model, commandValue: o.model, isToggleable: true, }); l.bind("icon").to(a, "value", (t) => UV(u(t, "type"))); l.bind("color").to(a, "value", (t) => u(t, "color")); l.bind("commandValue").to(a, "value", (t) => u(t, "model")); l.bind("isOn").to(a, "value", (t) => !!t); l.delegate("execute").to(c); const d = () => { const e = t.map((t) => { const e = i.create("highlight:" + t.model); this.listenTo(e, "execute", () => { c.buttonView.set({ lastExecuted: t.model }); }); return e; }); e.push(new kx()); e.push(i.create("removeHighlight")); return e; }; c.bind("isEnabled").to(a, "isEnabled"); Jx(c, d, { enableActiveItemFocusOnDropdownOpen: true, ariaLabel: n("Text highlight toolbar"), }); HV(c); l.on("execute", () => { e.execute("highlight", { value: l.commandValue }); }); this.listenTo(c, "execute", () => { e.editing.view.focus(); }); function u(t, e) { const n = !t || t === l.lastExecuted ? l.lastExecuted : t; return r[n][e]; } return c; }); } _addMenuBarButton(t) { const e = this.editor; const n = e.t; e.ui.componentFactory.add("menuBar:highlight", (i) => { const o = e.commands.get("highlight"); const r = new mM(i); r.buttonView.set({ label: n("Highlight"), icon: UV("marker") }); r.bind("isEnabled").to(o); r.buttonView.iconView.fillColor = "transparent"; const s = new gM(i); for (const n of t) { const t = new NB(i, r); const a = new wM(i); a.set({ label: n.title, icon: UV(n.type) }); a.delegate("execute").to(r); a.bind("isOn").to(o, "value", (t) => t === n.model); a.bind("ariaChecked").to(a, "isOn"); a.iconView .bind("fillColor") .to(a, "isOn", (t) => (t ? "transparent" : n.color)); a.on("execute", () => { e.execute("highlight", { value: n.model }); e.editing.view.focus(); }); t.children.add(a); s.items.add(t); } s.items.add(new Mx(i)); const a = new NB(i, r); const c = new wM(i); c.set({ label: n("Remove highlight"), icon: Bv.eraser }); c.delegate("execute").to(r); c.on("execute", () => { e.execute("highlight", { value: null }); e.editing.view.focus(); }); a.children.add(c); s.items.add(a); r.panelView.children.add(s); return r; }); } } function HV(t) { const e = t.buttonView.actionView; e.iconView.bind("fillColor").to(t.buttonView, "color"); } function UV(t) { return t === "marker" ? zV : PV; } class $V extends au { static get requires() { return [LV, jV]; } static get pluginName() { return "Highlight"; } } class qV extends lu { refresh() { const t = this.editor.model; const e = t.schema; const n = t.document.selection; this.isEnabled = WV(n, e, t); } execute() { const t = this.editor.model; t.change((e) => { const n = e.createElement("horizontalLine"); t.insertObject(n, null, null, { setSelection: "after" }); }); } } function WV(t, e, n) { const i = GV(t, n); return e.checkChild(i, "horizontalLine"); } function GV(t, e) { const n = wz(t, e); const i = n.start.parent; if (i.isEmpty && !i.is("element", "$root")) { return i.parent; } return i; } var KV = n(7528); var YV = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; YV.insert = "head"; YV.singleton = true; var QV = Zd()(KV.A, YV); const ZV = KV.A.locals || {}; class JV extends au { static get pluginName() { return "HorizontalLineEditing"; } init() { const t = this.editor; const e = t.model.schema; const n = t.t; const i = t.conversion; e.register("horizontalLine", { inheritAllFrom: "$blockObject" }); i.for("dataDowncast").elementToElement({ model: "horizontalLine", view: (t, { writer: e }) => e.createEmptyElement("hr"), }); i.for("editingDowncast").elementToStructure({ model: "horizontalLine", view: (t, { writer: e }) => { const i = n("Horizontal line"); const o = e.createContainerElement( "div", null, e.createEmptyElement("hr") ); e.addClass("ck-horizontal-line", o); e.setCustomProperty("hr", true, o); return XV(o, e, i); }, }); i.for("upcast").elementToElement({ view: "hr", model: "horizontalLine", }); t.commands.add("horizontalLine", new qV(t)); } } function XV(t, e, n) { e.setCustomProperty("horizontalLine", true, t); return hz(t, e, { label: n }); } class tO extends au { static get pluginName() { return "HorizontalLineUI"; } init() { const t = this.editor; t.ui.componentFactory.add("horizontalLine", () => { const t = this._createButton(iy); t.set({ tooltip: true }); return t; }); t.ui.componentFactory.add("menuBar:horizontalLine", () => this._createButton(wM) ); } _createButton(t) { const e = this.editor; const n = e.locale; const i = e.commands.get("horizontalLine"); const o = new t(e.locale); const r = n.t; o.set({ label: r("Horizontal line"), icon: Bv.horizontalLine }); o.bind("isEnabled").to(i, "isEnabled"); this.listenTo(o, "execute", () => { e.execute("horizontalLine"); e.editing.view.focus(); }); return o; } } class eO extends au { static get requires() { return [JV, tO, tP]; } static get pluginName() { return "HorizontalLine"; } } class nO extends lu { refresh() { const t = this.editor.model; const e = t.schema; const n = t.document.selection; const i = rO(n); this.isEnabled = iO(n, e, t); this.value = i ? i.getAttribute("value") || "" : null; } execute(t) { const e = this.editor.model; const n = e.document.selection; e.change((i) => { let o; if (this.value !== null) { o = rO(n); } else { o = i.createElement("rawHtml"); e.insertObject(o, null, null, { setSelection: "on" }); } i.setAttribute("value", t, o); }); } } function iO(t, e, n) { const i = oO(t, n); return e.checkChild(i, "rawHtml"); } function oO(t, e) { const n = wz(t, e); const i = n.start.parent; if (i.isEmpty && !i.is("rootElement")) { return i.parent; } return i; } function rO(t) { const e = t.getSelectedElement(); if (e && e.is("element", "rawHtml")) { return e; } return null; } var sO = n(8912); var aO = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; aO.insert = "head"; aO.singleton = true; var cO = Zd()(sO.A, aO); const lO = sO.A.locals || {}; class dO extends au { static get pluginName() { return "HtmlEmbedEditing"; } constructor(t) { super(t); this._widgetButtonViewReferences = new Set(); t.config.define("htmlEmbed", { showPreviews: false, sanitizeHtml: (t) => { z("html-embed-provide-sanitize-function"); return { html: t, hasChanged: false }; }, }); } init() { const t = this.editor; const e = t.model.schema; e.register("rawHtml", { inheritAllFrom: "$blockObject", allowAttributes: ["value"], }); t.commands.add("htmlEmbed", new nO(t)); this._setupConversion(); } _setupConversion() { const t = this.editor; const e = t.t; const n = t.editing.view; const i = this._widgetButtonViewReferences; const o = t.config.get("htmlEmbed"); this.editor.editing.view.on( "render", () => { for (const t of i) { if (t.element && t.element.isConnected) { return; } t.destroy(); i.delete(t); } }, { priority: "lowest" } ); t.data.registerRawContentMatcher({ name: "div", classes: "raw-html-embed", }); t.conversion .for("upcast") .elementToElement({ view: { name: "div", classes: "raw-html-embed" }, model: (t, { writer: e }) => e.createElement("rawHtml", { value: t.getCustomProperty("$rawContent"), }), }); t.conversion.for("dataDowncast").elementToElement({ model: "rawHtml", view: (t, { writer: e }) => e.createRawElement( "div", { class: "raw-html-embed" }, function (e) { e.innerHTML = t.getAttribute("value") || ""; } ), }); t.conversion.for("editingDowncast").elementToStructure({ model: { name: "rawHtml", attributes: ["value"] }, view: (i, { writer: s }) => { let a; let c; let l; const d = s.createRawElement( "div", { class: "raw-html-embed__content-wrapper" }, function (e) { a = e; r({ editor: t, domElement: e, state: c, props: l }); a.addEventListener( "mousedown", () => { if (c.isEditable) { const e = t.model; const n = e.document.selection.getSelectedElement(); if (n !== i) { e.change((t) => t.setSelection(i, "on")); } } }, true ); } ); const u = { makeEditable() { c = Object.assign({}, c, { isEditable: true }); r({ domElement: a, editor: t, state: c, props: l }); n.change((t) => { t.setAttribute("data-cke-ignore-events", "true", d); }); a.querySelector("textarea").focus(); }, save(e) { if (e !== c.getRawHtmlValue()) { t.execute("htmlEmbed", e); t.editing.view.focus(); } else { this.cancel(); } }, cancel() { c = Object.assign({}, c, { isEditable: false }); r({ domElement: a, editor: t, state: c, props: l }); t.editing.view.focus(); n.change((t) => { t.removeAttribute("data-cke-ignore-events", d); }); }, }; c = { showPreviews: o.showPreviews, isEditable: false, getRawHtmlValue: () => i.getAttribute("value") || "", }; l = { sanitizeHtml: o.sanitizeHtml, textareaPlaceholder: e("Paste raw HTML here..."), onEditClick() { u.makeEditable(); }, onSaveClick(t) { u.save(t); }, onCancelClick() { u.cancel(); }, }; const h = s.createContainerElement( "div", { class: "raw-html-embed", "data-html-embed-label": e("HTML snippet"), dir: t.locale.uiLanguageDirection, }, d ); s.setCustomProperty("rawHtmlApi", u, h); s.setCustomProperty("rawHtml", true, h); return hz(h, s, { label: e("HTML snippet"), hasSelectionHandle: true, }); }, }); function r({ editor: t, domElement: e, state: n, props: i }) { e.textContent = ""; const o = e.ownerDocument; let r; if (n.isEditable) { const t = { isDisabled: false, placeholder: i.textareaPlaceholder, }; r = a({ domDocument: o, state: n, props: t }); e.append(r); } else if (n.showPreviews) { const r = { sanitizeHtml: i.sanitizeHtml }; e.append(c({ domDocument: o, state: n, props: r, editor: t })); } else { const t = { isDisabled: true, placeholder: i.textareaPlaceholder, }; e.append(a({ domDocument: o, state: n, props: t })); } const l = { onEditClick: i.onEditClick, onSaveClick: () => { i.onSaveClick(r.value); }, onCancelClick: i.onCancelClick, }; e.prepend(s({ editor: t, domDocument: o, state: n, props: l })); } function s({ editor: t, domDocument: e, state: n, props: o }) { const r = ie(e, "div", { class: "raw-html-embed__buttons-wrapper", }); if (n.isEditable) { const e = uO(t, "save", o.onSaveClick); const n = uO(t, "cancel", o.onCancelClick); r.append(e.element, n.element); i.add(e).add(n); } else { const e = uO(t, "edit", o.onEditClick); r.append(e.element); i.add(e); } return r; } function a({ domDocument: t, state: e, props: n }) { const i = ie(t, "textarea", { placeholder: n.placeholder, class: "ck ck-reset ck-input ck-input-text raw-html-embed__source", }); i.disabled = n.isDisabled; i.value = e.getRawHtmlValue(); return i; } function c({ editor: t, domDocument: n, state: i, props: o }) { const r = o.sanitizeHtml(i.getRawHtmlValue()); const s = i.getRawHtmlValue().length > 0 ? e("No preview available") : e("Empty snippet content"); const a = ie( n, "div", { class: "ck ck-reset_all raw-html-embed__preview-placeholder" }, s ); const c = ie(n, "div", { class: "raw-html-embed__preview-content", dir: t.locale.contentLanguageDirection, }); const l = n.createRange(); const d = l.createContextualFragment(r.html); c.appendChild(d); const u = ie(n, "div", { class: "raw-html-embed__preview" }, [ a, c, ]); return u; } } } function uO(t, e, n) { const { t: i } = t.locale; const o = new iy(t.locale); const r = t.commands.get("htmlEmbed"); o.set({ class: `raw-html-embed__${e}-button`, icon: Bv.pencil, tooltip: true, tooltipPosition: t.locale.uiLanguageDirection === "rtl" ? "e" : "w", }); o.render(); if (e === "edit") { o.set({ icon: Bv.pencil, label: i("Edit source") }); o.bind("isEnabled").to(r); } else if (e === "save") { o.set({ icon: Bv.check, label: i("Save changes") }); o.bind("isEnabled").to(r); } else { o.set({ icon: Bv.cancel, label: i("Cancel") }); } o.on("execute", n); return o; } class hO extends au { static get pluginName() { return "HtmlEmbedUI"; } init() { const t = this.editor; const e = t.locale; const n = e.t; t.ui.componentFactory.add("htmlEmbed", () => { const t = this._createButton(iy); t.set({ tooltip: true, label: n("Insert HTML") }); return t; }); t.ui.componentFactory.add("menuBar:htmlEmbed", () => { const t = this._createButton(wM); t.set({ label: n("HTML snippet") }); return t; }); } _createButton(t) { const e = this.editor; const n = e.commands.get("htmlEmbed"); const i = new t(e.locale); i.set({ icon: Bv.html }); i.bind("isEnabled").to(n, "isEnabled"); this.listenTo(i, "execute", () => { e.execute("htmlEmbed"); e.editing.view.focus(); const t = e.editing.view.document.selection .getSelectedElement() .getCustomProperty("rawHtmlApi"); t.makeEditable(); }); return i; } } class mO extends au { static get requires() { return [dO, hO, tP]; } static get pluginName() { return "HtmlEmbed"; } } function gO(t, e, n, i) { var o = -1, r = t == null ? 0 : t.length; if (i && r) { n = t[++o]; } while (++o < r) { n = e(n, t[o], o, t); } return n; } const fO = gO; var pO = { À: "A", Á: "A", Â: "A", Ã: "A", Ä: "A", Å: "A", à: "a", á: "a", â: "a", ã: "a", ä: "a", å: "a", Ç: "C", ç: "c", Ð: "D", ð: "d", È: "E", É: "E", Ê: "E", Ë: "E", è: "e", é: "e", ê: "e", ë: "e", Ì: "I", Í: "I", Î: "I", Ï: "I", ì: "i", í: "i", î: "i", ï: "i", Ñ: "N", ñ: "n", Ò: "O", Ó: "O", Ô: "O", Õ: "O", Ö: "O", Ø: "O", ò: "o", ó: "o", ô: "o", õ: "o", ö: "o", ø: "o", Ù: "U", Ú: "U", Û: "U", Ü: "U", ù: "u", ú: "u", û: "u", ü: "u", Ý: "Y", ý: "y", ÿ: "y", Æ: "Ae", æ: "ae", Þ: "Th", þ: "th", ß: "ss", Ā: "A", Ă: "A", Ą: "A", ā: "a", ă: "a", ą: "a", Ć: "C", Ĉ: "C", Ċ: "C", Č: "C", ć: "c", ĉ: "c", ċ: "c", č: "c", Ď: "D", Đ: "D", ď: "d", đ: "d", Ē: "E", Ĕ: "E", Ė: "E", Ę: "E", Ě: "E", ē: "e", ĕ: "e", ė: "e", ę: "e", ě: "e", Ĝ: "G", Ğ: "G", Ġ: "G", Ģ: "G", ĝ: "g", ğ: "g", ġ: "g", ģ: "g", Ĥ: "H", Ħ: "H", ĥ: "h", ħ: "h", Ĩ: "I", Ī: "I", Ĭ: "I", Į: "I", İ: "I", ĩ: "i", ī: "i", ĭ: "i", į: "i", ı: "i", Ĵ: "J", ĵ: "j", Ķ: "K", ķ: "k", ĸ: "k", Ĺ: "L", Ļ: "L", Ľ: "L", Ŀ: "L", Ł: "L", ĺ: "l", ļ: "l", ľ: "l", ŀ: "l", ł: "l", Ń: "N", Ņ: "N", Ň: "N", Ŋ: "N", ń: "n", ņ: "n", ň: "n", ŋ: "n", Ō: "O", Ŏ: "O", Ő: "O", ō: "o", ŏ: "o", ő: "o", Ŕ: "R", Ŗ: "R", Ř: "R", ŕ: "r", ŗ: "r", ř: "r", Ś: "S", Ŝ: "S", Ş: "S", Š: "S", ś: "s", ŝ: "s", ş: "s", š: "s", Ţ: "T", Ť: "T", Ŧ: "T", ţ: "t", ť: "t", ŧ: "t", Ũ: "U", Ū: "U", Ŭ: "U", Ů: "U", Ű: "U", Ų: "U", ũ: "u", ū: "u", ŭ: "u", ů: "u", ű: "u", ų: "u", Ŵ: "W", ŵ: "w", Ŷ: "Y", ŷ: "y", Ÿ: "Y", Ź: "Z", Ż: "Z", Ž: "Z", ź: "z", ż: "z", ž: "z", IJ: "IJ", ij: "ij", Œ: "Oe", œ: "oe", ʼn: "'n", ſ: "s", }; var kO = YT(pO); const bO = kO; var wO = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var AO = "\\u0300-\\u036f", _O = "\\ufe20-\\ufe2f", CO = "\\u20d0-\\u20ff", vO = AO + _O + CO; var yO = "[" + vO + "]"; var xO = RegExp(yO, "g"); function EO(t) { t = bh(t); return t && t.replace(wO, bO).replace(xO, ""); } const DO = EO; var SO = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; function TO(t) { return t.match(SO) || []; } const BO = TO; var MO = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; function IO(t) { return MO.test(t); } const LO = IO; var NO = "\\ud800-\\udfff", zO = "\\u0300-\\u036f", PO = "\\ufe20-\\ufe2f", RO = "\\u20d0-\\u20ff", VO = zO + PO + RO, OO = "\\u2700-\\u27bf", FO = "a-z\\xdf-\\xf6\\xf8-\\xff", jO = "\\xac\\xb1\\xd7\\xf7", HO = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", UO = "\\u2000-\\u206f", $O = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", qO = "A-Z\\xc0-\\xd6\\xd8-\\xde", WO = "\\ufe0e\\ufe0f", GO = jO + HO + UO + $O; var KO = "['’]", YO = "[" + GO + "]", QO = "[" + VO + "]", ZO = "\\d+", JO = "[" + OO + "]", XO = "[" + FO + "]", tF = "[^" + NO + GO + ZO + OO + FO + qO + "]", eF = "\\ud83c[\\udffb-\\udfff]", nF = "(?:" + QO + "|" + eF + ")", iF = "[^" + NO + "]", oF = "(?:\\ud83c[\\udde6-\\uddff]){2}", rF = "[\\ud800-\\udbff][\\udc00-\\udfff]", sF = "[" + qO + "]", aF = "\\u200d"; var cF = "(?:" + XO + "|" + tF + ")", lF = "(?:" + sF + "|" + tF + ")", dF = "(?:" + KO + "(?:d|ll|m|re|s|t|ve))?", uF = "(?:" + KO + "(?:D|LL|M|RE|S|T|VE))?", hF = nF + "?", mF = "[" + WO + "]?", gF = "(?:" + aF + "(?:" + [iF, oF, rF].join("|") + ")" + mF + hF + ")*", fF = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", pF = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", kF = mF + hF + gF, bF = "(?:" + [JO, oF, rF].join("|") + ")" + kF; var wF = RegExp( [ sF + "?" + XO + "+" + dF + "(?=" + [YO, sF, "$"].join("|") + ")", lF + "+" + uF + "(?=" + [YO, sF + cF, "$"].join("|") + ")", sF + "?" + cF + "+" + dF, sF + "+" + uF, pF, fF, ZO, bF, ].join("|"), "g" ); function AF(t) { return t.match(wF) || []; } const _F = AF; function CF(t, e, n) { t = bh(t); e = n ? undefined : e; if (e === undefined) { return LO(t) ? _F(t) : BO(t); } return t.match(e) || []; } const vF = CF; var yF = "['’]"; var xF = RegExp(yF, "g"); function EF(t) { return function (e) { return fO(vF(DO(e).replace(xF, "")), t, ""); }; } const DF = EF; function SF(t, e, n) { var i = t.length; n = n === undefined ? i : n; return !e && n >= i ? t : Th(t, e, n); } const TF = SF; var BF = "\\ud800-\\udfff", MF = "\\u0300-\\u036f", IF = "\\ufe20-\\ufe2f", LF = "\\u20d0-\\u20ff", NF = MF + IF + LF, zF = "\\ufe0e\\ufe0f"; var PF = "\\u200d"; var RF = RegExp("[" + PF + BF + NF + zF + "]"); function VF(t) { return RF.test(t); } const OF = VF; function FF(t) { return t.split(""); } const jF = FF; var HF = "\\ud800-\\udfff", UF = "\\u0300-\\u036f", $F = "\\ufe20-\\ufe2f", qF = "\\u20d0-\\u20ff", WF = UF + $F + qF, GF = "\\ufe0e\\ufe0f"; var KF = "[" + HF + "]", YF = "[" + WF + "]", QF = "\\ud83c[\\udffb-\\udfff]", ZF = "(?:" + YF + "|" + QF + ")", JF = "[^" + HF + "]", XF = "(?:\\ud83c[\\udde6-\\uddff]){2}", tj = "[\\ud800-\\udbff][\\udc00-\\udfff]", ej = "\\u200d"; var nj = ZF + "?", ij = "[" + GF + "]?", oj = "(?:" + ej + "(?:" + [JF, XF, tj].join("|") + ")" + ij + nj + ")*", rj = ij + nj + oj, sj = "(?:" + [JF + YF + "?", YF, XF, tj, KF].join("|") + ")"; var aj = RegExp(QF + "(?=" + QF + ")|" + sj + rj, "g"); function cj(t) { return t.match(aj) || []; } const lj = cj; function dj(t) { return OF(t) ? lj(t) : jF(t); } const uj = dj; function hj(t) { return function (e) { e = bh(e); var n = OF(e) ? uj(e) : undefined; var i = n ? n[0] : e.charAt(0); var o = n ? TF(n, 1).join("") : e.slice(1); return i[t]() + o; }; } const mj = hj; var gj = mj("toUpperCase"); const fj = gj; var pj = DF(function (t, e, n) { return t + (n ? " " : "") + fj(e); }); const kj = pj; function bj(t, e, n, i) { if (e) { Aj(t, e, i); } if (n) { wj(t, n, i); } } function wj(t, e, n) { if (e.attributes) { for (const [i, o] of Object.entries(e.attributes)) { t.setAttribute(i, o, n); } } if (e.styles) { t.setStyle(e.styles, n); } if (e.classes) { t.addClass(e.classes, n); } } function Aj(t, e, n) { if (e.attributes) { for (const [i] of Object.entries(e.attributes)) { t.removeAttribute(i, n); } } if (e.styles) { for (const i of Object.keys(e.styles)) { t.removeStyle(i, n); } } if (e.classes) { t.removeClass(e.classes, n); } } function _j(t, e) { const n = hp(t); let i = "attributes"; for (i in e) { if (i == "classes") { n[i] = Array.from(new Set([...(t[i] || []), ...e[i]])); } else { n[i] = { ...t[i], ...e[i] }; } } return n; } function Cj(t, e, n, i, o) { const r = e.getAttribute(n); const s = {}; for (const t of ["attributes", "styles", "classes"]) { if (t != i) { if (r && r[t]) { s[t] = r[t]; } continue; } if (i == "classes") { const e = new Set((r && r.classes) || []); o(e); if (e.size) { s[t] = Array.from(e); } continue; } const e = new Map(Object.entries((r && r[t]) || {})); o(e); if (e.size) { s[t] = Object.fromEntries(e); } } if (Object.keys(s).length) { if (e.is("documentSelection")) { t.setSelectionAttribute(n, s); } else { t.setAttribute(n, s, e); } } else if (r) { if (e.is("documentSelection")) { t.removeSelectionAttribute(n); } else { t.removeAttribute(n, e); } } } function vj(t) { return kj(t).replace(/ /g, ""); } function yj(t) { return `html${vj(t)}Attributes`; } function xj({ model: t }) { return (e, n) => n.writer.createElement(t, { htmlContent: e.getCustomProperty("$rawContent"), }); } function Ej(t, { view: e, isInline: n }) { const i = t.t; return (t, { writer: o }) => { const r = i("HTML object"); const s = Dj(e, t, o); const a = t.getAttribute(yj(e)); o.addClass("html-object-embed__content", s); if (a) { wj(o, a, s); } const c = o.createContainerElement( n ? "span" : "div", { class: "html-object-embed", "data-html-object-embed-label": r }, s ); return hz(c, o, { label: r }); }; } function Dj(t, e, n) { return n.createRawElement(t, null, (t, n) => { n.setContentOf(t, e.getAttribute("htmlContent")); }); } function Sj({ view: t, model: e, allowEmpty: n }, i) { return (e) => { e.on( `element:${t}`, (t, e, r) => { let s = i.processViewAttributes(e.viewItem, r); if (!s && !r.consumable.test(e.viewItem, { name: true })) { return; } s = s || {}; r.consumable.consume(e.viewItem, { name: true }); if (!e.modelRange) { e = Object.assign( e, r.convertChildren(e.viewItem, e.modelCursor) ); } if (n && e.modelRange.isCollapsed && Object.keys(s).length) { const t = r.writer.createElement("htmlEmptyElement"); if (!r.safeInsert(t, e.modelCursor)) { return; } const n = r.getSplitParts(t); e.modelRange = r.writer.createRange( e.modelRange.start, r.writer.createPositionAfter(n[n.length - 1]) ); r.updateConversionResult(t, e); o(t, s, r); return; } for (const t of e.modelRange.getItems()) { o(t, s, r); } }, { priority: "low" } ); }; function o(t, n, i) { if (i.schema.checkAttribute(t, e)) { const o = t.getAttribute(e); const r = _j(n, o || {}); i.writer.setAttribute(e, r, t); } } } function Tj({ model: t, view: e }, n) { return (i, { writer: o, consumable: r }) => { if (!i.hasAttribute(t)) { return null; } const s = o.createContainerElement(e); const a = i.getAttribute(t); r.consume(i, `attribute:${t}`); wj(o, a, s); s.getFillerOffset = () => null; return n ? hz(s, o) : s; }; } function Bj({ priority: t, view: e }) { return (n, i) => { if (!n) { return; } const { writer: o } = i; const r = o.createAttributeElement(e, null, { priority: t }); wj(o, n, r); return r; }; } function Mj({ view: t }, e) { return (n) => { n.on( `element:${t}`, (t, n, i) => { if (!n.modelRange || n.modelRange.isCollapsed) { return; } const o = e.processViewAttributes(n.viewItem, i); if (!o) { return; } i.writer.setAttribute(yj(n.viewItem.name), o, n.modelRange); }, { priority: "low" } ); }; } function Ij({ view: t, model: e }) { return (n) => { n.on(`attribute:${yj(t)}:${e}`, (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const { attributeOldValue: i, attributeNewValue: o } = e; const r = n.writer; const s = n.mapper.toViewElement(e.item); bj(r, i, o, s); }); }; } const Lj = { block: [ { model: "codeBlock", view: "pre" }, { model: "paragraph", view: "p" }, { model: "blockQuote", view: "blockquote" }, { model: "listItem", view: "li" }, { model: "pageBreak", view: "div" }, { model: "rawHtml", view: "div" }, { model: "table", view: "table" }, { model: "tableRow", view: "tr" }, { model: "tableCell", view: "td" }, { model: "tableCell", view: "th" }, { model: "tableColumnGroup", view: "colgroup" }, { model: "tableColumn", view: "col" }, { model: "caption", view: "caption" }, { model: "caption", view: "figcaption" }, { model: "imageBlock", view: "img" }, { model: "imageInline", view: "img" }, { model: "htmlP", view: "p", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlBlockquote", view: "blockquote", modelSchema: { inheritAllFrom: "$container" }, }, { model: "htmlTable", view: "table", modelSchema: { allowWhere: "$block", isBlock: true }, }, { model: "htmlTbody", view: "tbody", modelSchema: { allowIn: "htmlTable", isBlock: false }, }, { model: "htmlThead", view: "thead", modelSchema: { allowIn: "htmlTable", isBlock: false }, }, { model: "htmlTfoot", view: "tfoot", modelSchema: { allowIn: "htmlTable", isBlock: false }, }, { model: "htmlCaption", view: "caption", modelSchema: { allowIn: "htmlTable", allowChildren: "$text", isBlock: false, }, }, { model: "htmlColgroup", view: "colgroup", modelSchema: { allowIn: "htmlTable", allowChildren: "col", isBlock: false, }, }, { model: "htmlCol", view: "col", modelSchema: { allowIn: "htmlColgroup", isBlock: false }, }, { model: "htmlTr", view: "tr", modelSchema: { allowIn: ["htmlTable", "htmlThead", "htmlTbody"], isLimit: true, }, }, { model: "htmlTd", view: "td", modelSchema: { allowIn: "htmlTr", allowContentOf: "$container", isLimit: true, isBlock: false, }, }, { model: "htmlTh", view: "th", modelSchema: { allowIn: "htmlTr", allowContentOf: "$container", isLimit: true, isBlock: false, }, }, { model: "htmlFigure", view: "figure", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlFigcaption", view: "figcaption", modelSchema: { allowIn: "htmlFigure", allowChildren: "$text", isBlock: false, }, }, { model: "htmlAddress", view: "address", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlAside", view: "aside", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlMain", view: "main", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlDetails", view: "details", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlSummary", view: "summary", modelSchema: { allowChildren: "$text", allowIn: "htmlDetails", isBlock: false, }, }, { model: "htmlDiv", view: "div", paragraphLikeModel: "htmlDivParagraph", modelSchema: { inheritAllFrom: "$container" }, }, { model: "htmlFieldset", view: "fieldset", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlLegend", view: "legend", modelSchema: { allowIn: "htmlFieldset", allowChildren: "$text" }, }, { model: "htmlHeader", view: "header", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlFooter", view: "footer", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlForm", view: "form", modelSchema: { inheritAllFrom: "$container", isBlock: true }, }, { model: "htmlHgroup", view: "hgroup", modelSchema: { allowChildren: [ "htmlH1", "htmlH2", "htmlH3", "htmlH4", "htmlH5", "htmlH6", ], isBlock: false, }, }, { model: "htmlH1", view: "h1", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlH2", view: "h2", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlH3", view: "h3", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlH4", view: "h4", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlH5", view: "h5", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlH6", view: "h6", modelSchema: { inheritAllFrom: "$block" }, }, { model: "$htmlList", modelSchema: { allowWhere: "$container", allowChildren: ["$htmlList", "htmlLi"], isBlock: false, }, }, { model: "htmlDir", view: "dir", modelSchema: { inheritAllFrom: "$htmlList" }, }, { model: "htmlMenu", view: "menu", modelSchema: { inheritAllFrom: "$htmlList" }, }, { model: "htmlUl", view: "ul", modelSchema: { inheritAllFrom: "$htmlList" }, }, { model: "htmlOl", view: "ol", modelSchema: { inheritAllFrom: "$htmlList" }, }, { model: "htmlLi", view: "li", modelSchema: { allowIn: "$htmlList", allowChildren: "$text", isBlock: false, }, }, { model: "htmlPre", view: "pre", modelSchema: { inheritAllFrom: "$block" }, }, { model: "htmlArticle", view: "article", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlSection", view: "section", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlNav", view: "nav", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, { model: "htmlDivDl", view: "div", modelSchema: { allowChildren: ["htmlDt", "htmlDd"], allowIn: "htmlDl", }, }, { model: "htmlDl", view: "dl", modelSchema: { allowWhere: "$container", allowChildren: ["htmlDt", "htmlDd", "htmlDivDl"], isBlock: false, }, }, { model: "htmlDt", view: "dt", modelSchema: { allowChildren: "$block", isBlock: false }, }, { model: "htmlDd", view: "dd", modelSchema: { allowChildren: "$block", isBlock: false }, }, { model: "htmlCenter", view: "center", modelSchema: { inheritAllFrom: "$container", isBlock: false }, }, ], inline: [ { model: "htmlLiAttributes", view: "li", appliesToBlock: true, coupledAttribute: "listItemId", }, { model: "htmlOlAttributes", view: "ol", appliesToBlock: true, coupledAttribute: "listItemId", }, { model: "htmlUlAttributes", view: "ul", appliesToBlock: true, coupledAttribute: "listItemId", }, { model: "htmlFigureAttributes", view: "figure", appliesToBlock: "table", }, { model: "htmlTheadAttributes", view: "thead", appliesToBlock: "table", }, { model: "htmlTbodyAttributes", view: "tbody", appliesToBlock: "table", }, { model: "htmlFigureAttributes", view: "figure", appliesToBlock: "imageBlock", }, { model: "htmlAcronym", view: "acronym", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlTt", view: "tt", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlFont", view: "font", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlTime", view: "time", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlVar", view: "var", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlBig", view: "big", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlSmall", view: "small", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlSamp", view: "samp", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlQ", view: "q", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlOutput", view: "output", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlKbd", view: "kbd", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlBdi", view: "bdi", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlBdo", view: "bdo", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlAbbr", view: "abbr", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlA", view: "a", priority: 5, coupledAttribute: "linkHref", }, { model: "htmlStrong", view: "strong", coupledAttribute: "bold", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlB", view: "b", coupledAttribute: "bold", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlI", view: "i", coupledAttribute: "italic", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlEm", view: "em", coupledAttribute: "italic", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlS", view: "s", coupledAttribute: "strikethrough", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlDel", view: "del", coupledAttribute: "strikethrough", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlIns", view: "ins", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlU", view: "u", coupledAttribute: "underline", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlSub", view: "sub", coupledAttribute: "subscript", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlSup", view: "sup", coupledAttribute: "superscript", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlCode", view: "code", coupledAttribute: "code", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlMark", view: "mark", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlSpan", view: "span", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlCite", view: "cite", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlLabel", view: "label", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlDfn", view: "dfn", attributeProperties: { copyOnEnter: true, isFormatting: true }, }, { model: "htmlObject", view: "object", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlIframe", view: "iframe", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlInput", view: "input", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlButton", view: "button", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlTextarea", view: "textarea", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlSelect", view: "select", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlVideo", view: "video", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlEmbed", view: "embed", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlOembed", view: "oembed", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlAudio", view: "audio", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlImg", view: "img", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlCanvas", view: "canvas", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlMeter", view: "meter", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlProgress", view: "progress", isObject: true, modelSchema: { inheritAllFrom: "$inlineObject" }, }, { model: "htmlScript", view: "script", modelSchema: { allowWhere: ["$text", "$block"], isInline: true }, }, { model: "htmlStyle", view: "style", modelSchema: { allowWhere: ["$text", "$block"], isInline: true }, }, { model: "htmlCustomElement", view: "$customElement", modelSchema: { allowWhere: ["$text", "$block"], allowAttributesOf: "$inlineObject", isInline: true, }, }, ], }; var Nj = ql(function (t, e, n, i) { _l(t, e, n, i); }); const zj = Nj; class Pj extends au { constructor() { super(...arguments); this._definitions = []; } static get pluginName() { return "DataSchema"; } init() { for (const t of Lj.block) { this.registerBlockElement(t); } for (const t of Lj.inline) { this.registerInlineElement(t); } } registerBlockElement(t) { this._definitions.push({ ...t, isBlock: true }); } registerInlineElement(t) { this._definitions.push({ ...t, isInline: true }); } extendBlockElement(t) { this._extendDefinition({ ...t, isBlock: true }); } extendInlineElement(t) { this._extendDefinition({ ...t, isInline: true }); } getDefinitionsForView(t, e = false) { const n = new Set(); for (const i of this._getMatchingViewDefinitions(t)) { if (e) { for (const t of this._getReferences(i.model)) { n.add(t); } } n.add(i); } return n; } getDefinitionsForModel(t) { return this._definitions.filter((e) => e.model == t); } _getMatchingViewDefinitions(t) { return this._definitions.filter((e) => e.view && Rj(t, e.view)); } *_getReferences(t) { const e = [ "inheritAllFrom", "inheritTypesFrom", "allowWhere", "allowContentOf", "allowAttributesOf", ]; const n = this._definitions.filter((e) => e.model == t); for (const { modelSchema: i } of n) { if (!i) { continue; } for (const n of e) { for (const e of rl(i[n] || [])) { const n = this._definitions.filter((t) => t.model == e); for (const i of n) { if (e !== t) { yield* this._getReferences(i.model); yield i; } } } } } } _extendDefinition(t) { const e = Array.from(this._definitions.entries()).filter( ([, e]) => e.model == t.model ); if (e.length == 0) { this._definitions.push(t); return; } for (const [n, i] of e) { this._definitions[n] = zj({}, i, t, (t, e) => Array.isArray(t) ? t.concat(e) : undefined ); } } } function Rj(t, e) { if (typeof t === "string") { return t === e; } if (t instanceof RegExp) { return t.test(e); } return false; } var Vj = n(9064); var Oj = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Oj.insert = "head"; Oj.singleton = true; var Fj = Zd()(Vj.A, Oj); const jj = Vj.A.locals || {}; class Hj extends au { constructor(t) { super(t); this._dataSchema = t.plugins.get("DataSchema"); this._allowedAttributes = new Ru(); this._disallowedAttributes = new Ru(); this._allowedElements = new Set(); this._disallowedElements = new Set(); this._dataInitialized = false; this._coupledAttributes = null; this._registerElementsAfterInit(); this._registerElementHandlers(); this._registerCoupledAttributesPostFixer(); this._registerAssociatedHtmlAttributesPostFixer(); } static get pluginName() { return "DataFilter"; } static get requires() { return [Pj, tP]; } loadAllowedConfig(t) { for (const e of t) { const t = e.name || /[\s\S]+/; const n = Kj(e); this.allowElement(t); n.forEach((t) => this.allowAttributes(t)); } } loadDisallowedConfig(t) { for (const e of t) { const t = e.name || /[\s\S]+/; const n = Kj(e); if (n.length == 0) { this.disallowElement(t); } else { n.forEach((t) => this.disallowAttributes(t)); } } } loadAllowedEmptyElementsConfig(t) { for (const e of t) { this.allowEmptyElement(e); } } allowElement(t) { for (const e of this._dataSchema.getDefinitionsForView(t, true)) { this._addAllowedElement(e); this._coupledAttributes = null; } } disallowElement(t) { for (const e of this._dataSchema.getDefinitionsForView(t, false)) { this._disallowedElements.add(e.view); } } allowEmptyElement(t) { for (const e of this._dataSchema.getDefinitionsForView(t, true)) { if (e.isInline) { this._dataSchema.extendInlineElement({ ...e, allowEmpty: true }); } } } allowAttributes(t) { this._allowedAttributes.add(t); } disallowAttributes(t) { this._disallowedAttributes.add(t); } processViewAttributes(t, e) { const { consumable: n } = e; Uj(t, this._disallowedAttributes, n); return $j(t, Uj(t, this._allowedAttributes, n)); } _addAllowedElement(t) { if (this._allowedElements.has(t)) { return; } this._allowedElements.add(t); if ("appliesToBlock" in t && typeof t.appliesToBlock == "string") { for (const e of this._dataSchema.getDefinitionsForModel( t.appliesToBlock )) { if (e.isBlock) { this._addAllowedElement(e); } } } if (this._dataInitialized) { this.editor.data.once( "set", () => { this._fireRegisterEvent(t); }, { priority: M.highest + 1 } ); } } _registerElementsAfterInit() { this.editor.data.on( "init", () => { this._dataInitialized = true; for (const t of this._allowedElements) { this._fireRegisterEvent(t); } }, { priority: M.highest + 1 } ); } _registerElementHandlers() { this.on( "register", (t, e) => { const n = this.editor.model.schema; if (e.isObject && !n.isRegistered(e.model)) { this._registerObjectElement(e); } else if (e.isBlock) { this._registerBlockElement(e); } else if (e.isInline) { this._registerInlineElement(e); } else { throw new N("data-filter-invalid-definition", null, e); } t.stop(); }, { priority: "lowest" } ); } _registerCoupledAttributesPostFixer() { const t = this.editor.model; const e = t.document.selection; t.document.registerPostFixer((e) => { const n = t.document.differ.getChanges(); let i = false; const o = this._getCoupledAttributesMap(); for (const t of n) { if (t.type != "attribute" || t.attributeNewValue !== null) { continue; } const n = o.get(t.attributeKey); if (!n) { continue; } for (const { item: o } of t.range.getWalker()) { for (const t of n) { if (o.hasAttribute(t)) { e.removeAttribute(t, o); i = true; } } } } return i; }); this.listenTo(e, "change:attribute", (n, { attributeKeys: i }) => { const o = new Set(); const r = this._getCoupledAttributesMap(); for (const t of i) { if (e.hasAttribute(t)) { continue; } const n = r.get(t); if (!n) { continue; } for (const t of n) { if (e.hasAttribute(t)) { o.add(t); } } } if (o.size == 0) { return; } t.change((t) => { for (const e of o) { t.removeSelectionAttribute(e); } }); }); } _registerAssociatedHtmlAttributesPostFixer() { const t = this.editor.model; t.document.registerPostFixer((e) => { const n = t.document.differ.getChanges(); let i = false; for (const o of n) { if (o.type !== "insert" || o.name === "$text") { continue; } for (const n of o.attributes.keys()) { if (!n.startsWith("html") || !n.endsWith("Attributes")) { continue; } if (!t.schema.checkAttribute(o.name, n)) { e.removeAttribute(n, o.position.nodeAfter); i = true; } } } return i; }); } _getCoupledAttributesMap() { if (this._coupledAttributes) { return this._coupledAttributes; } this._coupledAttributes = new Map(); for (const t of this._allowedElements) { if (t.coupledAttribute && t.model) { const e = this._coupledAttributes.get(t.coupledAttribute); if (e) { e.push(t.model); } else { this._coupledAttributes.set(t.coupledAttribute, [t.model]); } } } return this._coupledAttributes; } _fireRegisterEvent(t) { if (t.view && this._disallowedElements.has(t.view)) { return; } this.fire(t.view ? `register:${t.view}` : "register", t); } _registerObjectElement(t) { const e = this.editor; const n = e.model.schema; const i = e.conversion; const { view: o, model: r } = t; n.register(r, t.modelSchema); if (!o) { return; } n.extend(t.model, { allowAttributes: [yj(o), "htmlContent"] }); e.data.registerRawContentMatcher({ name: o }); i.for("upcast").elementToElement({ view: o, model: xj(t), converterPriority: M.low + 2, }); i.for("upcast").add(Mj(t, this)); i.for("editingDowncast").elementToStructure({ model: { name: r, attributes: [yj(o)] }, view: Ej(e, t), }); i.for("dataDowncast").elementToElement({ model: r, view: (t, { writer: e }) => Dj(o, t, e), }); i.for("dataDowncast").add(Ij(t)); } _registerBlockElement(t) { const e = this.editor; const n = e.model.schema; const i = e.conversion; const { view: o, model: r } = t; if (!n.isRegistered(t.model)) { n.register(t.model, t.modelSchema); if (!o) { return; } i.for("upcast").elementToElement({ model: r, view: o, converterPriority: M.low + 2, }); i.for("downcast").elementToElement({ model: r, view: o }); } if (!o) { return; } n.extend(t.model, { allowAttributes: yj(o) }); i.for("upcast").add(Mj(t, this)); i.for("downcast").add(Ij(t)); } _registerInlineElement(t) { const e = this.editor; const n = e.model.schema; const i = e.conversion; const o = t.model; if (t.appliesToBlock) { return; } n.extend("$text", { allowAttributes: o }); if (t.attributeProperties) { n.setAttributeProperties(o, t.attributeProperties); } i.for("upcast").add(Sj(t, this)); i.for("downcast").attributeToElement({ model: o, view: Bj(t) }); if (!t.allowEmpty) { return; } n.setAttributeProperties(o, { copyFromObject: false }); if (!n.isRegistered("htmlEmptyElement")) { n.register("htmlEmptyElement", { inheritAllFrom: "$inlineObject" }); } e.data.htmlProcessor.domConverter.registerInlineObjectMatcher((e) => { if ( e.name == t.view && e.isEmpty && Array.from(e.getAttributeKeys()).length ) { return { name: true }; } return null; }); i.for("editingDowncast").elementToElement({ model: "htmlEmptyElement", view: Tj(t, true), }); i.for("dataDowncast").elementToElement({ model: "htmlEmptyElement", view: Tj(t), }); } } function Uj(t, e, n) { const i = e.matchAll(t) || []; const o = t.document.stylesProcessor; return i.reduce( (e, { match: i }) => { for (const r of i.styles || []) { const i = o .getRelatedStyles(r) .filter((t) => t.split("-").length > r.split("-").length) .sort((t, e) => e.split("-").length - t.split("-").length); for (const o of i) { if (n.consume(t, { styles: [o] })) { e.styles.push(o); } } if (n.consume(t, { styles: [r] })) { e.styles.push(r); } } for (const o of i.classes || []) { if (n.consume(t, { classes: [o] })) { e.classes.push(o); } } for (const o of i.attributes || []) { if (n.consume(t, { attributes: [o] })) { e.attributes.push(o); } } return e; }, { attributes: [], classes: [], styles: [] } ); } function $j(t, { attributes: e, classes: n, styles: i }) { if (!e.length && !n.length && !i.length) { return null; } return { ...(e.length && { attributes: qj(t, e) }), ...(i.length && { styles: Wj(t, i) }), ...(n.length && { classes: n }), }; } function qj(t, e) { const n = {}; for (const i of e) { const e = t.getAttribute(i); if (e !== undefined && vc(i)) { n[i] = e; } } return n; } function Wj(t, e) { const n = new Hh(t.document.stylesProcessor); for (const i of e) { const e = t.getStyle(i); if (e !== undefined) { n.set(i, e); } } return Object.fromEntries(n.getStylesEntries()); } function Gj(t, e) { const { name: n } = t; const i = t[e]; if (fe(i)) { return Object.entries(i).map(([t, i]) => ({ name: n, [e]: { [t]: i }, })); } if (Array.isArray(i)) { return i.map((t) => ({ name: n, [e]: [t] })); } return [t]; } function Kj(t) { const { name: e, attributes: n, classes: i, styles: o } = t; const r = []; if (n) { r.push(...Gj({ name: e, attributes: n }, "attributes")); } if (i) { r.push(...Gj({ name: e, classes: i }, "classes")); } if (o) { r.push(...Gj({ name: e, styles: o }, "styles")); } return r; } class Yj extends au { static get requires() { return [Hj]; } static get pluginName() { return "CodeBlockElementSupport"; } init() { if (!this.editor.plugins.has("CodeBlockEditing")) { return; } const t = this.editor.plugins.get(Hj); t.on("register:pre", (e, n) => { if (n.model !== "codeBlock") { return; } const i = this.editor; const o = i.model.schema; const r = i.conversion; o.extend("codeBlock", { allowAttributes: ["htmlPreAttributes", "htmlContentAttributes"], }); r.for("upcast").add(Qj(t)); r.for("downcast").add(Zj()); e.stop(); }); } } function Qj(t) { return (e) => { e.on( "element:code", (e, n, i) => { const o = n.viewItem; const r = o.parent; if (!r || !r.is("element", "pre")) { return; } s(r, "htmlPreAttributes"); s(o, "htmlContentAttributes"); function s(e, o) { const r = t.processViewAttributes(e, i); if (r) { i.writer.setAttribute(o, r, n.modelRange); } } }, { priority: "low" } ); }; } function Zj() { return (t) => { t.on("attribute:htmlPreAttributes:codeBlock", (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const { attributeOldValue: i, attributeNewValue: o } = e; const r = n.mapper.toViewElement(e.item); const s = r.parent; bj(n.writer, i, o, s); }); t.on("attribute:htmlContentAttributes:codeBlock", (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const { attributeOldValue: i, attributeNewValue: o } = e; const r = n.mapper.toViewElement(e.item); bj(n.writer, i, o, r); }); }; } class Jj extends au { static get requires() { return [Hj]; } static get pluginName() { return "DualContentModelElementSupport"; } init() { const t = this.editor.plugins.get(Hj); t.on("register", (t, e) => { const n = e; const i = this.editor; const o = i.model.schema; const r = i.conversion; if (!n.paragraphLikeModel) { return; } if ( o.isRegistered(n.model) || o.isRegistered(n.paragraphLikeModel) ) { return; } const s = { model: n.paragraphLikeModel, view: n.view }; o.register(n.model, n.modelSchema); o.register(s.model, { inheritAllFrom: "$block" }); r.for("upcast").elementToElement({ view: n.view, model: (t, { writer: e }) => { if (this._hasBlockContent(t)) { return e.createElement(n.model); } return e.createElement(s.model); }, converterPriority: M.low + 0.5, }); r.for("downcast").elementToElement({ view: n.view, model: n.model, }); this._addAttributeConversion(n); r.for("downcast").elementToElement({ view: s.view, model: s.model, }); this._addAttributeConversion(s); t.stop(); }); } _hasBlockContent(t) { const e = this.editor.editing.view; const n = e.domConverter.blockElements; for (const i of e.createRangeIn(t).getItems()) { if (i.is("element") && n.includes(i.name)) { return true; } } return false; } _addAttributeConversion(t) { const e = this.editor; const n = e.conversion; const i = e.plugins.get(Hj); e.model.schema.extend(t.model, { allowAttributes: yj(t.view) }); n.for("upcast").add(Mj(t, i)); n.for("downcast").add(Ij(t)); } } class Xj extends au { static get requires() { return [Pj, QL]; } static get pluginName() { return "HeadingElementSupport"; } init() { const t = this.editor; if (!t.plugins.has("HeadingEditing")) { return; } const e = t.config.get("heading.options"); this.registerHeadingElements(t, e); } registerHeadingElements(t, e) { const n = t.plugins.get(Pj); const i = []; for (const t of e) { if ("model" in t && "view" in t) { n.registerBlockElement({ view: t.view, model: t.model }); i.push(t.model); } } n.extendBlockElement({ model: "htmlHgroup", modelSchema: { allowChildren: i }, }); } } function tH(t, e, n) { const i = t.createRangeOn(e); for (const { item: t } of i.getWalker()) { if (t.is("element", n)) { return t; } } } class eH extends au { static get requires() { return [Hj]; } static get pluginName() { return "ImageElementSupport"; } init() { const t = this.editor; if ( !t.plugins.has("ImageInlineEditing") && !t.plugins.has("ImageBlockEditing") ) { return; } const e = t.model.schema; const n = t.conversion; const i = t.plugins.get(Hj); i.on("register:figure", () => { n.for("upcast").add(oH(i)); }); i.on("register:img", (o, r) => { if (r.model !== "imageBlock" && r.model !== "imageInline") { return; } if (e.isRegistered("imageBlock")) { e.extend("imageBlock", { allowAttributes: [ "htmlImgAttributes", "htmlFigureAttributes", "htmlLinkAttributes", ], }); } if (e.isRegistered("imageInline")) { e.extend("imageInline", { allowAttributes: ["htmlA", "htmlImgAttributes"], }); } n.for("upcast").add(nH(i)); n.for("downcast").add(rH()); if (t.plugins.has("LinkImage")) { n.for("upcast").add(iH(i, t)); } o.stop(); }); } } function nH(t) { return (e) => { e.on( "element:img", (e, n, i) => { if (!n.modelRange) { return; } const o = n.viewItem; const r = t.processViewAttributes(o, i); if (r) { i.writer.setAttribute("htmlImgAttributes", r, n.modelRange); } }, { priority: "low" } ); }; } function iH(t, e) { const n = e.plugins.get("ImageUtils"); return (e) => { e.on( "element:a", (e, i, o) => { const r = i.viewItem; const s = n.findViewImgElement(r); if (!s) { return; } const a = i.modelCursor.parent; if (!a.is("element", "imageBlock")) { return; } const c = t.processViewAttributes(r, o); if (c) { o.writer.setAttribute("htmlLinkAttributes", c, a); } }, { priority: "low" } ); }; } function oH(t) { return (e) => { e.on( "element:figure", (e, n, i) => { const o = n.viewItem; if (!n.modelRange || !o.hasClass("image")) { return; } const r = t.processViewAttributes(o, i); if (r) { i.writer.setAttribute("htmlFigureAttributes", r, n.modelRange); } }, { priority: "low" } ); }; } function rH() { return (t) => { e("htmlImgAttributes"); n("img", "htmlImgAttributes"); n("figure", "htmlFigureAttributes"); n("a", "htmlLinkAttributes"); function e(e) { t.on( `attribute:${e}:imageInline`, (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const { attributeOldValue: i, attributeNewValue: o } = e; const r = n.mapper.toViewElement(e.item); bj(n.writer, i, o, r); }, { priority: "low" } ); } function n(e, n) { t.on( `attribute:${n}:imageBlock`, (t, n, i) => { if (!i.consumable.test(n.item, t.name)) { return; } const { attributeOldValue: o, attributeNewValue: r } = n; const s = i.mapper.toViewElement(n.item); const a = tH(i.writer, s, e); if (a) { bj(i.writer, o, r, a); i.consumable.consume(n.item, t.name); } }, { priority: "low" } ); if (e === "a") { t.on( "attribute:linkHref:imageBlock", (t, e, n) => { if ( !n.consumable.consume( e.item, "attribute:htmlLinkAttributes:imageBlock" ) ) { return; } const i = n.mapper.toViewElement(e.item); const o = tH(n.writer, i, "a"); wj(n.writer, e.item.getAttribute("htmlLinkAttributes"), o); }, { priority: "low" } ); } } }; } class sH extends au { static get requires() { return [Hj]; } static get pluginName() { return "MediaEmbedElementSupport"; } init() { const t = this.editor; if ( !t.plugins.has("MediaEmbed") || t.config.get("mediaEmbed.previewsInData") ) { return; } const e = t.model.schema; const n = t.conversion; const i = this.editor.plugins.get(Hj); const o = this.editor.plugins.get(Pj); const r = t.config.get("mediaEmbed.elementName"); o.registerBlockElement({ model: "media", view: r }); i.on("register:figure", () => { n.for("upcast").add(cH(i)); }); i.on(`register:${r}`, (t, o) => { if (o.model !== "media") { return; } e.extend("media", { allowAttributes: [yj(r), "htmlFigureAttributes"], }); n.for("upcast").add(aH(i, r)); n.for("dataDowncast").add(lH(r)); t.stop(); }); } } function aH(t, e) { const n = (n, i, o) => { const r = i.viewItem; s(r, yj(e)); function s(e, n) { const r = t.processViewAttributes(e, o); if (r) { o.writer.setAttribute(n, r, i.modelRange); } } }; return (t) => { t.on(`element:${e}`, n, { priority: "low" }); }; } function cH(t) { return (e) => { e.on( "element:figure", (e, n, i) => { const o = n.viewItem; if (!n.modelRange || !o.hasClass("media")) { return; } const r = t.processViewAttributes(o, i); if (r) { i.writer.setAttribute("htmlFigureAttributes", r, n.modelRange); } }, { priority: "low" } ); }; } function lH(t) { return (e) => { n(t, yj(t)); n("figure", "htmlFigureAttributes"); function n(t, n) { e.on(`attribute:${n}:media`, (e, n, i) => { if (!i.consumable.consume(n.item, e.name)) { return; } const { attributeOldValue: o, attributeNewValue: r } = n; const s = i.mapper.toViewElement(n.item); const a = tH(i.writer, s, t); bj(i.writer, o, r, a); }); } }; } class dH extends au { static get requires() { return [Hj]; } static get pluginName() { return "ScriptElementSupport"; } init() { const t = this.editor.plugins.get(Hj); t.on("register:script", (e, n) => { const i = this.editor; const o = i.model.schema; const r = i.conversion; o.register("htmlScript", n.modelSchema); o.extend("htmlScript", { allowAttributes: ["htmlScriptAttributes", "htmlContent"], isContent: true, }); i.data.registerRawContentMatcher({ name: "script" }); r.for("upcast").elementToElement({ view: "script", model: xj(n) }); r.for("upcast").add(Mj(n, t)); r.for("downcast").elementToElement({ model: "htmlScript", view: (t, { writer: e }) => Dj("script", t, e), }); r.for("downcast").add(Ij(n)); e.stop(); }); } } class uH extends au { static get requires() { return [Hj]; } static get pluginName() { return "TableElementSupport"; } init() { const t = this.editor; if (!t.plugins.has("TableEditing")) { return; } const e = t.model.schema; const n = t.conversion; const i = t.plugins.get(Hj); const o = t.plugins.get("TableUtils"); i.on("register:figure", () => { n.for("upcast").add(gH(i)); }); i.on("register:table", (r, s) => { if (s.model !== "table") { return; } e.extend("table", { allowAttributes: [ "htmlTableAttributes", "htmlFigureAttributes", "htmlTheadAttributes", "htmlTbodyAttributes", ], }); n.for("upcast").add(mH(i)); n.for("downcast").add(fH()); t.model.document.registerPostFixer(hH(t.model, o)); r.stop(); }); } } function hH(t, e) { return (n) => { const i = t.document.differ.getChanges(); let o = false; for (const t of i) { if (t.type != "attribute" || t.attributeKey != "headingRows") { continue; } const i = t.range.start.nodeAfter; const r = i.getAttribute("htmlTheadAttributes"); const s = i.getAttribute("htmlTbodyAttributes"); if (r && !t.attributeNewValue) { n.removeAttribute("htmlTheadAttributes", i); o = true; } else if (s && t.attributeNewValue == e.getRows(i)) { n.removeAttribute("htmlTbodyAttributes", i); o = true; } } return o; }; } function mH(t) { return (e) => { e.on( "element:table", (e, n, i) => { if (!n.modelRange) { return; } const o = n.viewItem; r(o, "htmlTableAttributes"); for (const t of o.getChildren()) { if (t.is("element", "thead")) { r(t, "htmlTheadAttributes"); } if (t.is("element", "tbody")) { r(t, "htmlTbodyAttributes"); } } function r(e, o) { const r = t.processViewAttributes(e, i); if (r) { i.writer.setAttribute(o, r, n.modelRange); } } }, { priority: "low" } ); }; } function gH(t) { return (e) => { e.on( "element:figure", (e, n, i) => { const o = n.viewItem; if (!n.modelRange || !o.hasClass("table")) { return; } const r = t.processViewAttributes(o, i); if (r) { i.writer.setAttribute("htmlFigureAttributes", r, n.modelRange); } }, { priority: "low" } ); }; } function fH() { return (t) => { e("table", "htmlTableAttributes"); e("figure", "htmlFigureAttributes"); e("thead", "htmlTheadAttributes"); e("tbody", "htmlTbodyAttributes"); function e(e, n) { t.on(`attribute:${n}:table`, (t, n, i) => { if (!i.consumable.test(n.item, t.name)) { return; } const o = i.mapper.toViewElement(n.item); const r = tH(i.writer, o, e); if (!r) { return; } i.consumable.consume(n.item, t.name); bj(i.writer, n.attributeOldValue, n.attributeNewValue, r); }); } }; } class pH extends au { static get requires() { return [Hj]; } static get pluginName() { return "StyleElementSupport"; } init() { const t = this.editor.plugins.get(Hj); t.on("register:style", (e, n) => { const i = this.editor; const o = i.model.schema; const r = i.conversion; o.register("htmlStyle", n.modelSchema); o.extend("htmlStyle", { allowAttributes: ["htmlStyleAttributes", "htmlContent"], isContent: true, }); i.data.registerRawContentMatcher({ name: "style" }); r.for("upcast").elementToElement({ view: "style", model: xj(n) }); r.for("upcast").add(Mj(n, t)); r.for("downcast").elementToElement({ model: "htmlStyle", view: (t, { writer: e }) => Dj("style", t, e), }); r.for("downcast").add(Ij(n)); e.stop(); }); } } class kH extends au { static get requires() { return [Hj]; } static get pluginName() { return "ListElementSupport"; } init() { const t = this.editor; if (!t.plugins.has("ListEditing")) { return; } const e = t.model.schema; const n = t.conversion; const i = t.plugins.get(Hj); const o = t.plugins.get("ListEditing"); const r = t.plugins.get("ListUtils"); const s = ["ul", "ol", "li"]; o.registerDowncastStrategy({ scope: "item", attributeName: "htmlLiAttributes", setAttributeOnDowncast: wj, }); o.registerDowncastStrategy({ scope: "list", attributeName: "htmlUlAttributes", setAttributeOnDowncast: wj, }); o.registerDowncastStrategy({ scope: "list", attributeName: "htmlOlAttributes", setAttributeOnDowncast: wj, }); i.on("register", (t, o) => { if (!s.includes(o.view)) { return; } t.stop(); if (e.checkAttribute("$block", "htmlLiAttributes")) { return; } const r = s.map((t) => yj(t)); e.extend("$listItem", { allowAttributes: r }); n.for("upcast").add((t) => { t.on("element:ul", bH("htmlUlAttributes", i), { priority: "low", }); t.on("element:ol", bH("htmlOlAttributes", i), { priority: "low", }); t.on("element:li", bH("htmlLiAttributes", i), { priority: "low", }); }); }); o.on("postFixer", (t, { listNodes: e, writer: n }) => { for (const { node: i, previousNodeInList: o } of e) { if (!o) { continue; } if (o.getAttribute("listType") == i.getAttribute("listType")) { const e = wH(o.getAttribute("listType")); const r = o.getAttribute(e); if ( !Aw(i.getAttribute(e), r) && n.model.schema.checkAttribute(i, e) ) { n.setAttribute(e, r, i); t.return = true; } } if ( o.getAttribute("listItemId") == i.getAttribute("listItemId") ) { const e = o.getAttribute("htmlLiAttributes"); if ( !Aw(i.getAttribute("htmlLiAttributes"), e) && n.model.schema.checkAttribute(i, "htmlLiAttributes") ) { n.setAttribute("htmlLiAttributes", e, i); t.return = true; } } } }); o.on("postFixer", (t, { listNodes: e, writer: n }) => { for (const { node: i } of e) { const e = i.getAttribute("listType"); if ( !r.isNumberedListType(e) && i.getAttribute("htmlOlAttributes") ) { n.removeAttribute("htmlOlAttributes", i); t.return = true; } if ( r.isNumberedListType(e) && i.getAttribute("htmlUlAttributes") ) { n.removeAttribute("htmlUlAttributes", i); t.return = true; } } }); } afterInit() { const t = this.editor; if (!t.commands.get("indentList")) { return; } const e = t.commands.get("indentList"); this.listenTo(e, "afterExecute", (e, n) => { t.model.change((e) => { for (const i of n) { const n = wH(i.getAttribute("listType")); if (!t.model.schema.checkAttribute(i, n)) { continue; } e.setAttribute(n, {}, i); } }); }); } } function bH(t, e) { return (n, i, o) => { const r = i.viewItem; if (!i.modelRange) { Object.assign(i, o.convertChildren(i.viewItem, i.modelCursor)); } const s = e.processViewAttributes(r, o); for (const e of i.modelRange.getItems({ shallow: true })) { if (!e.hasAttribute("listItemId")) { continue; } if ( e.hasAttribute("htmlUlAttributes") || e.hasAttribute("htmlOlAttributes") ) { continue; } if (o.writer.model.schema.checkAttribute(e, t)) { o.writer.setAttribute(t, s || {}, e); } } }; } function wH(t) { return t === "numbered" || t == "customNumbered" ? "htmlOlAttributes" : "htmlUlAttributes"; } class AH extends au { static get requires() { return [Hj, Pj]; } static get pluginName() { return "CustomElementSupport"; } init() { const t = this.editor.plugins.get(Hj); const e = this.editor.plugins.get(Pj); t.on("register:$customElement", (n, i) => { n.stop(); const o = this.editor; const r = o.model.schema; const s = o.conversion; const a = o.editing.view.domConverter.unsafeElements; const c = o.data.htmlProcessor.domConverter.preElements; r.register(i.model, i.modelSchema); r.extend(i.model, { allowAttributes: [ "htmlElementName", "htmlCustomElementAttributes", "htmlContent", ], isContent: true, }); o.data.htmlProcessor.domConverter.registerRawContentMatcher({ name: "template", }); s.for("upcast").elementToElement({ view: /.*/, model: (n, r) => { if (n.name == "$comment") { return null; } if (!_H(n.name)) { return null; } if (e.getDefinitionsForView(n.name).size) { return null; } if (!a.includes(n.name)) { a.push(n.name); } if (!c.includes(n.name)) { c.push(n.name); } const s = r.writer.createElement(i.model, { htmlElementName: n.name, }); const l = t.processViewAttributes(n, r); if (l) { r.writer.setAttribute("htmlCustomElementAttributes", l, s); } let d; if ( n.is("element", "template") && n.getCustomProperty("$rawContent") ) { d = n.getCustomProperty("$rawContent"); } else { const t = new $A(n.document); const e = t.createDocumentFragment(n); const i = o.data.htmlProcessor.domConverter.viewToDom(e); const r = i.firstChild; while (r.firstChild) { i.appendChild(r.firstChild); } r.remove(); d = o.data.htmlProcessor.htmlWriter.getHtml(i); } r.writer.setAttribute("htmlContent", d, s); for (const { item: t } of o.editing.view.createRangeIn(n)) { r.consumable.consume(t, { name: true }); } return s; }, converterPriority: "low", }); s.for("editingDowncast").elementToElement({ model: { name: i.model, attributes: [ "htmlElementName", "htmlCustomElementAttributes", "htmlContent", ], }, view: (t, { writer: e }) => { const n = t.getAttribute("htmlElementName"); const i = e.createRawElement(n); if (t.hasAttribute("htmlCustomElementAttributes")) { wj(e, t.getAttribute("htmlCustomElementAttributes"), i); } return i; }, }); s.for("dataDowncast").elementToElement({ model: { name: i.model, attributes: [ "htmlElementName", "htmlCustomElementAttributes", "htmlContent", ], }, view: (t, { writer: e }) => { const n = t.getAttribute("htmlElementName"); const i = t.getAttribute("htmlContent"); const o = e.createRawElement(n, null, (t, e) => { e.setContentOf(t, i); }); if (t.hasAttribute("htmlCustomElementAttributes")) { wj(e, t.getAttribute("htmlCustomElementAttributes"), o); } return o; }, }); }); } } function _H(t) { try { document.createElement(t); } catch (t) { return false; } return true; } class CH extends au { static get pluginName() { return "GeneralHtmlSupport"; } static get requires() { return [Hj, Yj, Jj, Xj, eH, sH, dH, uH, pH, kH, AH]; } init() { const t = this.editor; const e = t.plugins.get(Hj); e.loadAllowedEmptyElementsConfig( t.config.get("htmlSupport.allowEmpty") || [] ); e.loadAllowedConfig(t.config.get("htmlSupport.allow") || []); e.loadDisallowedConfig(t.config.get("htmlSupport.disallow") || []); } getGhsAttributeNameForElement(t) { const e = this.editor.plugins.get("DataSchema"); const n = Array.from(e.getDefinitionsForView(t, false)); const i = n.find((t) => t.isInline && !n[0].isObject); if (i) { return i.model; } return yj(t); } addModelHtmlClass(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "classes", (t) => { for (const n of rl(e)) { t.add(n); } }); } }); } removeModelHtmlClass(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "classes", (t) => { for (const n of rl(e)) { t.delete(n); } }); } }); } setModelHtmlAttributes(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "attributes", (t) => { for (const [n, i] of Object.entries(e)) { t.set(n, i); } }); } }); } removeModelHtmlAttributes(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "attributes", (t) => { for (const n of rl(e)) { t.delete(n); } }); } }); } setModelHtmlStyles(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "styles", (t) => { for (const [n, i] of Object.entries(e)) { t.set(n, i); } }); } }); } removeModelHtmlStyles(t, e, n) { const i = this.editor.model; const o = this.getGhsAttributeNameForElement(t); i.change((t) => { for (const r of vH(i, n, o)) { Cj(t, r, o, "styles", (t) => { for (const n of rl(e)) { t.delete(n); } }); } }); } } function* vH(t, e, n) { if (!e) { return; } if ( !(Symbol.iterator in e) && e.is("documentSelection") && e.isCollapsed ) { if (t.schema.checkAttributeInSelection(e, n)) { yield e; } } else { for (const i of yH(t, e, n)) { yield* i.getItems({ shallow: true }); } } } function yH(t, e, n) { if ( !(Symbol.iterator in e) && (e.is("node") || e.is("$text") || e.is("$textProxy")) ) { if (t.schema.checkAttribute(e, n)) { return [t.createRangeOn(e)]; } else { return []; } } else { return t.schema.getValidRanges(t.createSelection(e).getRanges(), n); } } class xH extends au { static get pluginName() { return "HtmlComment"; } init() { const t = this.editor; const e = new Map(); t.data.processor.skipComments = false; t.model.schema.addAttributeCheck((t, e) => { if (t.endsWith("$root") && e.startsWith("$comment")) { return true; } }); t.conversion.for("upcast").elementToMarker({ view: "$comment", model: (t) => { const n = T(); const i = `$comment:${n}`; const o = t.getCustomProperty("$rawContent"); e.set(i, o); return i; }, }); t.conversion.for("dataDowncast").markerToElement({ model: "$comment", view: (t, { writer: e }) => { let n = undefined; for (const e of this.editor.model.document.getRootNames()) { n = this.editor.model.document.getRoot(e); if (n.hasAttribute(t.markerName)) { break; } } const i = t.markerName; const o = n.getAttribute(i); const r = e.createUIElement("$comment"); e.setCustomProperty("$rawContent", o, r); return r; }, }); t.model.document.registerPostFixer((n) => { let i = false; const o = t.model.document.differ .getChangedMarkers() .filter((t) => t.name.startsWith("$comment:")); for (const t of o) { const { oldRange: o, newRange: r } = t.data; if (o && r && o.root == r.root) { continue; } if (o) { const e = o.root; if (e.hasAttribute(t.name)) { n.removeAttribute(t.name, e); i = true; } } if (r) { const o = r.root; if (o.rootName == "$graveyard") { n.removeMarker(t.name); i = true; } else if (!o.hasAttribute(t.name)) { n.setAttribute(t.name, e.get(t.name) || "", o); i = true; } } } return i; }); t.data.on( "set", () => { for (const e of t.model.markers.getMarkersGroup("$comment")) { this.removeHtmlComment(e.name); } }, { priority: "high" } ); t.model.on( "deleteContent", (e, [n]) => { for (const e of n.getRanges()) { const n = t.model.schema.getLimitElement(e); const i = t.model.createPositionAt(n, 0); const o = t.model.createPositionAt(n, "end"); let r; if (i.isTouching(e.start) && o.isTouching(e.end)) { r = this.getHtmlCommentsInRange(t.model.createRange(i, o)); } else { r = this.getHtmlCommentsInRange(e, { skipBoundaries: true }); } for (const t of r) { this.removeHtmlComment(t); } } }, { priority: "high" } ); } createHtmlComment(t, e) { const n = T(); const i = this.editor; const o = i.model; const r = o.document.getRoot(t.root.rootName); const s = `$comment:${n}`; return o.change((n) => { const i = n.createRange(t); n.addMarker(s, { usingOperation: true, affectsData: true, range: i, }); n.setAttribute(s, e, r); return s; }); } removeHtmlComment(t) { const e = this.editor; const n = e.model.markers.get(t); if (!n) { return false; } e.model.change((t) => { t.removeMarker(n); }); return true; } getHtmlCommentData(t) { const e = this.editor; const n = e.model.markers.get(t); if (!n) { return null; } let i = ""; for (const e of this.editor.model.document.getRoots()) { if (e.hasAttribute(t)) { i = e.getAttribute(t); break; } } return { content: i, position: n.getStart() }; } getHtmlCommentsInRange(t, { skipBoundaries: e = false } = {}) { const n = !e; return Array.from( this.editor.model.markers.getMarkersGroup("$comment") ) .filter((e) => i(e, t)) .map((t) => t.name); function i(t, e) { const i = t.getRange().start; return ( (i.isAfter(e.start) || (n && i.isEqual(e.start))) && (i.isBefore(e.end) || (n && i.isEqual(e.end))) ); } } } class EH extends Xb { toView(t) { if (!t.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)) { return super.toView(t); } let e = ""; let n = ""; t = t.replace(/]*>/i, (t) => { e = t; return ""; }); t = t.replace(/<\?xml\s[^?]*\?>/i, (t) => { n = t; return ""; }); const i = this._toDom(t); const o = this.domConverter.domToView(i, { skipComments: this.skipComments, }); const r = new $A(o.document); r.setCustomProperty( "$fullPageDocument", i.ownerDocument.documentElement.outerHTML, o ); if (e) { r.setCustomProperty("$fullPageDocType", e, o); } if (n) { r.setCustomProperty("$fullPageXmlDeclaration", n, o); } return o; } toData(t) { let e = super.toData(t); const n = t.getCustomProperty("$fullPageDocument"); const i = t.getCustomProperty("$fullPageDocType"); const o = t.getCustomProperty("$fullPageXmlDeclaration"); if (n) { e = n.replace(/<\/body\s*>/, e + "$&"); if (i) { e = i + "\n" + e; } if (o) { e = o + "\n" + e; } } return e; } } class DH extends au { static get pluginName() { return "FullPage"; } init() { const t = this.editor; const e = [ "$fullPageDocument", "$fullPageDocType", "$fullPageXmlDeclaration", ]; t.data.processor = new EH(t.data.viewDocument); t.model.schema.extend("$root", { allowAttributes: e }); t.data.on( "toModel", (n, [i]) => { const o = t.model.document.getRoot(); t.model.change((t) => { for (const n of e) { const e = i.getCustomProperty(n); if (e) { t.setAttribute(n, e, o); } } }); }, { priority: "low" } ); t.data.on( "toView", (t, [n]) => { if (!n.is("rootElement")) { return; } const i = n; const o = t.return; if (!i.hasAttribute("$fullPageDocument")) { return; } const r = new $A(o.document); for (const t of e) { const e = i.getAttribute(t); if (e) { r.setCustomProperty(t, e, o); } } }, { priority: "low" } ); t.data.on( "set", () => { const n = t.model.document.getRoot(); t.model.change((t) => { for (const i of e) { if (n.hasAttribute(i)) { t.removeAttribute(i, n); } } }); }, { priority: "high" } ); t.data.on( "get", (t, e) => { if (!e[0]) { e[0] = {}; } e[0].trim = false; }, { priority: "high" } ); } } function SH(t) { return t.createContainerElement( "span", { class: "image-inline" }, t.createEmptyElement("img") ); } function TH(t) { return t.createContainerElement("figure", { class: "image" }, [ t.createEmptyElement("img"), t.createSlot("children"), ]); } function BH(t, e) { const n = t.plugins.get("ImageUtils"); const i = t.plugins.has("ImageInlineEditing") && t.plugins.has("ImageBlockEditing"); return (t) => { if (!n.isInlineImageView(t)) { return null; } if (!i) { return o(t); } const r = t.getStyle("display") == "block" || t.findAncestor(n.isBlockImageView) ? "imageBlock" : "imageInline"; if (r !== e) { return null; } return o(t); }; function o(t) { const e = { name: true }; if (t.hasAttribute("src")) { e.attributes = ["src"]; } return e; } } function MH(t, e) { const n = id(e.getSelectedBlocks()); if (!n || t.isObject(n)) { return "imageBlock"; } if (n.isEmpty && n.name != "listItem") { return "imageBlock"; } return "imageInline"; } function IH(t) { if (t && t.endsWith("px")) { return parseInt(t); } return null; } function LH(t) { const e = IH(t.getStyle("width")); const n = IH(t.getStyle("height")); return !!(e && n); } const NH = /^(image|image-inline)$/; class zH extends au { constructor() { super(...arguments); this._domEmitter = new (Za())(); } static get pluginName() { return "ImageUtils"; } isImage(t) { return this.isInlineImage(t) || this.isBlockImage(t); } isInlineImageView(t) { return !!t && t.is("element", "img"); } isBlockImageView(t) { return !!t && t.is("element", "figure") && t.hasClass("image"); } insertImage(t = {}, e = null, n = null, i = {}) { const o = this.editor; const r = o.model; const s = r.document.selection; const a = OH(o, e || s, n); t = { ...Object.fromEntries(s.getAttributes()), ...t }; for (const e in t) { if (!r.schema.checkAttribute(a, e)) { delete t[e]; } } return r.change((n) => { const { setImageSizes: o = true } = i; const s = n.createElement(a, t); r.insertObject(s, e, null, { setSelection: "on", findOptimalPosition: !e && a != "imageInline" ? "auto" : undefined, }); if (s.parent) { if (o) { this.setImageNaturalSizeAttributes(s); } return s; } return null; }); } setImageNaturalSizeAttributes(t) { const n = t.getAttribute("src"); if (!n) { return; } if (t.getAttribute("width") || t.getAttribute("height")) { return; } this.editor.model.change((i) => { const o = new e.window.Image(); this._domEmitter.listenTo(o, "load", () => { if (!t.getAttribute("width") && !t.getAttribute("height")) { this.editor.model.enqueueChange(i.batch, (e) => { e.setAttribute("width", o.naturalWidth, t); e.setAttribute("height", o.naturalHeight, t); }); } this._domEmitter.stopListening(o, "load"); }); o.src = n; }); } getClosestSelectedImageWidget(t) { const e = t.getFirstPosition(); if (!e) { return null; } const n = t.getSelectedElement(); if (n && this.isImageWidget(n)) { return n; } let i = e.parent; while (i) { if (i.is("element") && this.isImageWidget(i)) { return i; } i = i.parent; } return null; } getClosestSelectedImageElement(t) { const e = t.getSelectedElement(); return this.isImage(e) ? e : t.getFirstPosition().findAncestor("imageBlock"); } getImageWidgetFromImageView(t) { return t.findAncestor({ classes: NH }); } isImageAllowed() { const t = this.editor.model; const e = t.document.selection; return PH(this.editor, e) && RH(e); } toImageWidget(t, e, n) { e.setCustomProperty("image", true, t); const i = () => { const e = this.findViewImgElement(t); const i = e.getAttribute("alt"); return i ? `${i} ${n}` : n; }; return hz(t, e, { label: i }); } isImageWidget(t) { return !!t.getCustomProperty("image") && uz(t); } isBlockImage(t) { return !!t && t.is("element", "imageBlock"); } isInlineImage(t) { return !!t && t.is("element", "imageInline"); } findViewImgElement(t) { if (this.isInlineImageView(t)) { return t; } const e = this.editor.editing.view; for (const { item: n } of e.createRangeIn(t)) { if (this.isInlineImageView(n)) { return n; } } } destroy() { this._domEmitter.stopListening(); return super.destroy(); } } function PH(t, e) { const n = OH(t, e, null); if (n == "imageBlock") { const n = VH(e, t.model); if (t.model.schema.checkChild(n, "imageBlock")) { return true; } } else if (t.model.schema.checkChild(e.focus, "imageInline")) { return true; } return false; } function RH(t) { return [...t.focus.getAncestors()].every( (t) => !t.is("element", "imageBlock") ); } function VH(t, e) { const n = wz(t, e); const i = n.start.parent; if (i.isEmpty && !i.is("element", "$root")) { return i.parent; } return i; } function OH(t, e, n) { const i = t.model.schema; const o = t.config.get("image.insert.type"); if (!t.plugins.has("ImageBlockEditing")) { return "imageInline"; } if (!t.plugins.has("ImageInlineEditing")) { return "imageBlock"; } if (n) { return n; } if (o === "inline") { return "imageInline"; } if (o !== "auto") { return "imageBlock"; } if (e.is("selection")) { return MH(i, e); } return i.checkChild(e, "imageInline") ? "imageInline" : "imageBlock"; } const FH = new RegExp( String( /^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source + /\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source + /(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source + /(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source ) ); class jH extends au { static get requires() { return [$P, zH, rR, zI]; } static get pluginName() { return "AutoImage"; } constructor(t) { super(t); this._timeoutId = null; this._positionToInsert = null; } init() { const t = this.editor; const n = t.model.document; const i = t.plugins.get("ClipboardPipeline"); this.listenTo(i, "inputTransformation", () => { const t = n.selection.getFirstRange(); const e = jw.fromPosition(t.start); e.stickiness = "toPrevious"; const i = jw.fromPosition(t.end); i.stickiness = "toNext"; n.once( "change:data", () => { this._embedImageBetweenPositions(e, i); e.detach(); i.detach(); }, { priority: "high" } ); }); t.commands.get("undo").on( "execute", () => { if (this._timeoutId) { e.window.clearTimeout(this._timeoutId); this._positionToInsert.detach(); this._timeoutId = null; this._positionToInsert = null; } }, { priority: "high" } ); } _embedImageBetweenPositions(t, e) { const n = this.editor; const i = new Wp(t, e); const o = i.getWalker({ ignoreElementEnd: true }); const r = Object.fromEntries( n.model.document.selection.getAttributes() ); const s = this.editor.plugins.get("ImageUtils"); let a = ""; for (const t of o) { if (t.item.is("$textProxy")) { a += t.item.data; } } a = a.trim(); if (!a.match(FH)) { i.detach(); return; } this._positionToInsert = jw.fromPosition(t); this._timeoutId = setTimeout(() => { const t = n.commands.get("insertImage"); if (!t.isEnabled) { i.detach(); return; } n.model.change((t) => { this._timeoutId = null; t.remove(i); i.detach(); let e; if (this._positionToInsert.root.rootName !== "$graveyard") { e = this._positionToInsert.toPosition(); } s.insertImage({ ...r, src: a }, e); this._positionToInsert.detach(); this._positionToInsert = null; }); const e = n.plugins.get("Delete"); e.requestUndoOnBackspace(); }, 100); } } class HH extends lu { refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = e.getClosestSelectedImageElement( this.editor.model.document.selection ); this.isEnabled = !!n; if (this.isEnabled && n.hasAttribute("alt")) { this.value = n.getAttribute("alt"); } else { this.value = false; } } execute(t) { const e = this.editor; const n = e.plugins.get("ImageUtils"); const i = e.model; const o = n.getClosestSelectedImageElement(i.document.selection); i.change((e) => { e.setAttribute("alt", t.newValue, o); }); } } class UH extends au { static get requires() { return [zH]; } static get pluginName() { return "ImageTextAlternativeEditing"; } init() { this.editor.commands.add("imageTextAlternative", new HH(this.editor)); } } var $H = n(8748); var qH = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; qH.insert = "head"; qH.singleton = true; var WH = Zd()($H.A, qH); const GH = $H.A.locals || {}; class KH extends nu { constructor(t) { super(t); const e = this.locale.t; this.focusTracker = new od(); this.keystrokes = new rd(); this.labeledInput = this._createLabeledInputView(); this.saveButtonView = this._createButton( e("Save"), Bv.check, "ck-button-save" ); this.saveButtonView.type = "submit"; this.cancelButtonView = this._createButton( e("Cancel"), Bv.cancel, "ck-button-cancel", "cancel" ); this._focusables = new Ad(); this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.setTemplate({ tag: "form", attributes: { class: ["ck", "ck-text-alternative-form", "ck-responsive-form"], tabindex: "-1", }, children: [ this.labeledInput, this.saveButtonView, this.cancelButtonView, ], }); } render() { super.render(); this.keystrokes.listenTo(this.element); ru({ view: this }); [ this.labeledInput, this.saveButtonView, this.cancelButtonView, ].forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); }); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } _createButton(t, e, n, i) { const o = new iy(this.locale); o.set({ label: t, icon: e, tooltip: true }); o.extendTemplate({ attributes: { class: n } }); if (i) { o.delegate("execute").to(this, i); } return o; } _createLabeledInputView() { const t = this.locale.t; const e = new Uy(this.locale, uE); e.label = t("Text alternative"); return e; } } function YH(t) { const e = t.plugins.get("ContextualBalloon"); const n = t.plugins.get("ImageUtils"); if ( n.getClosestSelectedImageWidget(t.editing.view.document.selection) ) { const n = QH(t); e.updatePosition(n); } } function QH(t) { const e = t.editing.view; const n = pS.defaultPositions; const i = t.plugins.get("ImageUtils"); return { target: e.domConverter.mapViewToDom( i.getClosestSelectedImageWidget(e.document.selection) ), positions: [ n.northArrowSouth, n.northArrowSouthWest, n.northArrowSouthEast, n.southArrowNorth, n.southArrowNorthWest, n.southArrowNorthEast, n.viewportStickyNorth, ], }; } class ZH extends au { static get requires() { return [_T]; } static get pluginName() { return "ImageTextAlternativeUI"; } init() { this._createButton(); } destroy() { super.destroy(); if (this._form) { this._form.destroy(); } } _createButton() { const t = this.editor; const e = t.t; t.ui.componentFactory.add("imageTextAlternative", (n) => { const i = t.commands.get("imageTextAlternative"); const o = new iy(n); o.set({ label: e("Change image text alternative"), icon: Bv.textAlternative, tooltip: true, }); o.bind("isEnabled").to(i, "isEnabled"); o.bind("isOn").to(i, "value", (t) => !!t); this.listenTo(o, "execute", () => { this._showForm(); }); return o; }); } _createForm() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = t.plugins.get("ImageUtils"); this._balloon = this.editor.plugins.get("ContextualBalloon"); this._form = new (ou(KH))(t.locale); this._form.render(); this.listenTo(this._form, "submit", () => { t.execute("imageTextAlternative", { newValue: this._form.labeledInput.fieldView.element.value, }); this._hideForm(true); }); this.listenTo(this._form, "cancel", () => { this._hideForm(true); }); this._form.keystrokes.set("Esc", (t, e) => { this._hideForm(true); e(); }); this.listenTo(t.ui, "update", () => { if (!i.getClosestSelectedImageWidget(n.selection)) { this._hideForm(true); } else if (this._isVisible) { YH(t); } }); iu({ emitter: this._form, activator: () => this._isVisible, contextElements: () => [this._balloon.view.element], callback: () => this._hideForm(), }); } _showForm() { if (this._isVisible) { return; } if (!this._form) { this._createForm(); } const t = this.editor; const e = t.commands.get("imageTextAlternative"); const n = this._form.labeledInput; this._form.disableCssTransitions(); if (!this._isInBalloon) { this._balloon.add({ view: this._form, position: QH(t) }); } n.fieldView.value = n.fieldView.element.value = e.value || ""; this._form.labeledInput.fieldView.select(); this._form.enableCssTransitions(); } _hideForm(t = false) { if (!this._isInBalloon) { return; } if (this._form.focusTracker.isFocused) { this._form.saveButtonView.focus(); } this._balloon.remove(this._form); if (t) { this.editor.editing.view.focus(); } } get _isVisible() { return !!this._balloon && this._balloon.visibleView === this._form; } get _isInBalloon() { return !!this._balloon && this._balloon.hasView(this._form); } } class JH extends au { static get requires() { return [UH, ZH]; } static get pluginName() { return "ImageTextAlternative"; } } function XH(t) { const e = (e, n, i) => { if ( !i.consumable.test(n.viewItem, { name: true, classes: "image" }) ) { return; } const o = t.findViewImgElement(n.viewItem); if (!o || !i.consumable.test(o, { name: true })) { return; } i.consumable.consume(n.viewItem, { name: true, classes: "image" }); const r = i.convertItem(o, n.modelCursor); const s = id(r.modelRange.getItems()); if (!s) { i.consumable.revert(n.viewItem, { name: true, classes: "image" }); return; } i.convertChildren(n.viewItem, s); i.updateConversionResult(s, n); }; return (t) => { t.on("element:figure", e); }; } function tU(t) { const e = ["srcset", "media", "type", "sizes"]; const n = (n, i, o) => { const r = i.viewItem; if (!o.consumable.test(r, { name: true })) { return; } const s = new Map(); for (const t of r.getChildren()) { if (t.is("element", "source")) { const n = {}; for (const i of e) { if (t.hasAttribute(i)) { if (o.consumable.test(t, { attributes: i })) { n[i] = t.getAttribute(i); } } } if (Object.keys(n).length) { s.set(t, n); } } } const a = t.findViewImgElement(r); if (!a) { return; } let c = i.modelCursor.parent; if (!c.is("element", "imageBlock")) { const t = o.convertItem(a, i.modelCursor); i.modelRange = t.modelRange; i.modelCursor = t.modelCursor; c = first(t.modelRange.getItems()); } o.consumable.consume(r, { name: true }); for (const [t, e] of s) { o.consumable.consume(t, { attributes: Object.keys(e) }); } if (s.size) { o.writer.setAttribute("sources", Array.from(s.values()), c); } o.convertChildren(r, c); }; return (t) => { t.on("element:picture", n); }; } function eU(t, e) { const n = (e, n, i) => { if (!i.consumable.consume(n.item, e.name)) { return; } const o = i.writer; const r = i.mapper.toViewElement(n.item); const s = t.findViewImgElement(r); if (n.attributeNewValue === null) { o.removeAttribute("srcset", s); o.removeAttribute("sizes", s); } else { if (n.attributeNewValue) { o.setAttribute("srcset", n.attributeNewValue, s); o.setAttribute("sizes", "100vw", s); } } }; return (t) => { t.on(`attribute:srcset:${e}`, n); }; } function nU(t) { const e = (e, n, i) => { if (!i.consumable.consume(n.item, e.name)) { return; } const o = i.writer; const r = i.mapper.toViewElement(n.item); const s = t.findViewImgElement(r); const a = n.attributeNewValue; if (a && a.length) { const t = o.createContainerElement( "picture", null, a.map((t) => o.createEmptyElement("source", t)) ); const e = []; let n = s.parent; while (n && n.is("attributeElement")) { const t = n.parent; o.unwrap(o.createRangeOn(s), n); e.unshift(n); n = t; } o.insert(o.createPositionBefore(s), t); o.move(o.createRangeOn(s), o.createPositionAt(t, "end")); for (const n of e) { o.wrap(o.createRangeOn(t), n); } } else if (s.parent.is("element", "picture")) { const t = s.parent; o.move(o.createRangeOn(s), o.createPositionBefore(t)); o.remove(t); } }; return (t) => { t.on("attribute:sources:imageBlock", e); t.on("attribute:sources:imageInline", e); }; } function iU(t, e, n) { const i = (e, n, i) => { if (!i.consumable.consume(n.item, e.name)) { return; } const o = i.writer; const r = i.mapper.toViewElement(n.item); const s = t.findViewImgElement(r); o.setAttribute(n.attributeKey, n.attributeNewValue || "", s); }; return (t) => { t.on(`attribute:${n}:${e}`, i); }; } class oU extends Eg { observe(t) { this.listenTo( t, "load", (t, e) => { const n = e.target; if (this.checkShouldIgnoreEventFromTarget(n)) { return; } if (n.tagName == "IMG") { this._fireEvents(e); } }, { useCapture: true } ); } stopObserving(t) { this.stopListening(t); } _fireEvents(t) { if (this.isEnabled) { this.document.fire("layoutChanged"); this.document.fire("imageLoaded", t); } } } class rU extends lu { constructor(t) { super(t); const e = t.config.get("image.insert.type"); if (!t.plugins.has("ImageBlockEditing")) { if (e === "block") { z("image-block-plugin-required"); } } if (!t.plugins.has("ImageInlineEditing")) { if (e === "inline") { z("image-inline-plugin-required"); } } } refresh() { const t = this.editor.plugins.get("ImageUtils"); this.isEnabled = t.isImageAllowed(); } execute(t) { const e = rl(t.source); const n = this.editor.model.document.selection; const i = this.editor.plugins.get("ImageUtils"); const o = Object.fromEntries(n.getAttributes()); e.forEach((t, e) => { const r = n.getSelectedElement(); if (typeof t === "string") { t = { src: t }; } if (e && r && i.isImage(r)) { const e = this.editor.model.createPositionAfter(r); i.insertImage({ ...t, ...o }, e); } else { i.insertImage({ ...t, ...o }); } }); } } class sU extends lu { constructor(t) { super(t); this.decorate("cleanupImage"); } refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = this.editor.model.document.selection.getSelectedElement(); this.isEnabled = e.isImage(n); this.value = this.isEnabled ? n.getAttribute("src") : null; } execute(t) { const e = this.editor.model.document.selection.getSelectedElement(); const n = this.editor.plugins.get("ImageUtils"); this.editor.model.change((i) => { i.setAttribute("src", t.source, e); this.cleanupImage(i, e); n.setImageNaturalSizeAttributes(e); }); } cleanupImage(t, e) { t.removeAttribute("srcset", e); t.removeAttribute("sizes", e); t.removeAttribute("sources", e); t.removeAttribute("width", e); t.removeAttribute("height", e); t.removeAttribute("alt", e); } } class aU extends au { static get requires() { return [zH]; } static get pluginName() { return "ImageEditing"; } init() { const t = this.editor; const e = t.conversion; t.editing.view.addObserver(oU); e.for("upcast") .attributeToAttribute({ view: { name: "img", key: "alt" }, model: "alt", }) .attributeToAttribute({ view: { name: "img", key: "srcset" }, model: "srcset", }); const n = new rU(t); const i = new sU(t); t.commands.add("insertImage", n); t.commands.add("replaceImageSource", i); t.commands.add("imageInsert", n); } } class cU extends au { static get requires() { return [zH]; } static get pluginName() { return "ImageSizeAttributes"; } afterInit() { this._registerSchema(); this._registerConverters("imageBlock"); this._registerConverters("imageInline"); } _registerSchema() { if (this.editor.plugins.has("ImageBlockEditing")) { this.editor.model.schema.extend("imageBlock", { allowAttributes: ["width", "height"], }); } if (this.editor.plugins.has("ImageInlineEditing")) { this.editor.model.schema.extend("imageInline", { allowAttributes: ["width", "height"], }); } } _registerConverters(t) { const e = this.editor; const n = e.plugins.get("ImageUtils"); const i = t === "imageBlock" ? "figure" : "img"; e.conversion .for("upcast") .attributeToAttribute({ view: { name: i, styles: { width: /.+/ } }, model: { key: "width", value: (t) => { if (LH(t)) { return IH(t.getStyle("width")); } return null; }, }, }) .attributeToAttribute({ view: { name: i, key: "width" }, model: "width", }) .attributeToAttribute({ view: { name: i, styles: { height: /.+/ } }, model: { key: "height", value: (t) => { if (LH(t)) { return IH(t.getStyle("height")); } return null; }, }, }) .attributeToAttribute({ view: { name: i, key: "height" }, model: "height", }); e.conversion.for("editingDowncast").add((t) => { o(t, "width", "width", true); o(t, "height", "height", true); }); e.conversion.for("dataDowncast").add((t) => { o(t, "width", "width", false); o(t, "height", "height", false); }); function o(e, i, o, r) { e.on(`attribute:${i}:${t}`, (e, i, s) => { if (!s.consumable.consume(i.item, e.name)) { return; } const a = s.writer; const c = s.mapper.toViewElement(i.item); const l = n.findViewImgElement(c); if (i.attributeNewValue !== null) { a.setAttribute(o, i.attributeNewValue, l); } else { a.removeAttribute(o, l); } if (i.item.hasAttribute("sources")) { return; } const d = i.item.hasAttribute("resizedWidth"); if (t === "imageInline" && !d && !r) { return; } const u = i.item.getAttribute("width"); const h = i.item.getAttribute("height"); if (u && h) { a.setStyle("aspect-ratio", `${u}/${h}`, l); } }); } } } class lU extends lu { constructor(t, e) { super(t); this._modelElementName = e; } refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = e.getClosestSelectedImageElement( this.editor.model.document.selection ); if (this._modelElementName === "imageBlock") { this.isEnabled = e.isInlineImage(n); } else { this.isEnabled = e.isBlockImage(n); } } execute(t = {}) { const e = this.editor; const n = this.editor.model; const i = e.plugins.get("ImageUtils"); const o = i.getClosestSelectedImageElement(n.document.selection); const r = Object.fromEntries(o.getAttributes()); if (!r.src && !r.uploadId) { return null; } return n.change((e) => { const { setImageSizes: s = true } = t; const a = Array.from(n.markers).filter((t) => t.getRange().containsItem(o) ); const c = i.insertImage( r, n.createSelection(o, "on"), this._modelElementName, { setImageSizes: s } ); if (!c) { return null; } const l = e.createRangeOn(c); for (const t of a) { const n = t.getRange(); const i = n.root.rootName != "$graveyard" ? n.getJoined(l, true) : l; e.updateMarker(t, { range: i }); } return { oldElement: o, newElement: c }; }); } } var dU = n(8588); var uU = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; uU.insert = "head"; uU.singleton = true; var hU = Zd()(dU.A, uU); const mU = dU.A.locals || {}; class gU extends au { static get requires() { return [zH]; } static get pluginName() { return "ImagePlaceholder"; } afterInit() { this._setupSchema(); this._setupConversion(); this._setupLoadListener(); } _setupSchema() { const t = this.editor.model.schema; if (t.isRegistered("imageBlock")) { t.extend("imageBlock", { allowAttributes: ["placeholder"] }); } if (t.isRegistered("imageInline")) { t.extend("imageInline", { allowAttributes: ["placeholder"] }); } } _setupConversion() { const t = this.editor; const e = t.conversion; const n = t.plugins.get("ImageUtils"); e.for("editingDowncast").add((t) => { t.on("attribute:placeholder", (t, e, i) => { if (!i.consumable.test(e.item, t.name)) { return; } if ( !e.item.is("element", "imageBlock") && !e.item.is("element", "imageInline") ) { return; } i.consumable.consume(e.item, t.name); const o = i.writer; const r = i.mapper.toViewElement(e.item); const s = n.findViewImgElement(r); if (e.attributeNewValue) { o.addClass("image_placeholder", s); o.setStyle( "background-image", `url(${e.attributeNewValue})`, s ); o.setCustomProperty("editingPipeline:doNotReuseOnce", true, s); } else { o.removeClass("image_placeholder", s); o.removeStyle("background-image", s); } }); }); } _setupLoadListener() { const t = this.editor; const e = t.model; const n = t.editing; const i = n.view; const o = t.plugins.get("ImageUtils"); i.addObserver(oU); this.listenTo(i.document, "imageLoaded", (t, r) => { const s = i.domConverter.mapDomToView(r.target); if (!s) { return; } const a = o.getImageWidgetFromImageView(s); if (!a) { return; } const c = n.mapper.toModelElement(a); if (!c || !c.hasAttribute("placeholder")) { return; } e.enqueueChange({ isUndoable: false }, (t) => { t.removeAttribute("placeholder", c); }); }); } } class fU extends au { static get requires() { return [aU, cU, zH, gU, iz]; } static get pluginName() { return "ImageBlockEditing"; } init() { const t = this.editor; const e = t.model.schema; e.register("imageBlock", { inheritAllFrom: "$blockObject", allowAttributes: ["alt", "src", "srcset"], }); this._setupConversion(); if (t.plugins.has("ImageInlineEditing")) { t.commands.add("imageTypeBlock", new lU(this.editor, "imageBlock")); this._setupClipboardIntegration(); } } _setupConversion() { const t = this.editor; const e = t.t; const n = t.conversion; const i = t.plugins.get("ImageUtils"); n.for("dataDowncast").elementToStructure({ model: "imageBlock", view: (t, { writer: e }) => TH(e), }); n.for("editingDowncast").elementToStructure({ model: "imageBlock", view: (t, { writer: n }) => i.toImageWidget(TH(n), n, e("image widget")), }); n.for("downcast") .add(iU(i, "imageBlock", "src")) .add(iU(i, "imageBlock", "alt")) .add(eU(i, "imageBlock")); n.for("upcast") .elementToElement({ view: BH(t, "imageBlock"), model: (t, { writer: e }) => e.createElement( "imageBlock", t.hasAttribute("src") ? { src: t.getAttribute("src") } : undefined ), }) .add(XH(i)); } _setupClipboardIntegration() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = t.plugins.get("ImageUtils"); const o = t.plugins.get("ClipboardPipeline"); this.listenTo(o, "inputTransformation", (o, r) => { const s = Array.from(r.content.getChildren()); let a; if (!s.every(i.isInlineImageView)) { return; } if (r.targetRanges) { a = t.editing.mapper.toModelRange(r.targetRanges[0]); } else { a = e.document.selection.getFirstRange(); } const c = e.createSelection(a); if (MH(e.schema, c) === "imageBlock") { const t = new $A(n.document); const e = s.map((e) => t.createElement("figure", { class: "image" }, e) ); r.content = t.createDocumentFragment(e); } }); this.listenTo(o, "contentInsertion", (t, n) => { if (n.method !== "paste") { return; } e.change((t) => { const e = t.createRangeIn(n.content); for (const t of e.getItems()) { if (t.is("element", "imageBlock")) { i.setImageNaturalSizeAttributes(t); } } }); }); } } var pU = n(5420); var kU = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; kU.insert = "head"; kU.singleton = true; var bU = Zd()(pU.A, kU); const wU = pU.A.locals || {}; class AU extends nu { constructor(t, e = []) { super(t); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusables = new Ad(); this.children = this.createCollection(); this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); for (const t of e) { this.children.add(t); this._focusables.add(t); if (t instanceof py) { this._focusables.addMany(t.children); } } if (this._focusables.length > 1) { for (const t of this._focusables) { if (_U(t)) { t.focusCycler.on("forwardCycle", (t) => { this._focusCycler.focusNext(); t.stop(); }); t.focusCycler.on("backwardCycle", (t) => { this._focusCycler.focusPrevious(); t.stop(); }); } } } this.setTemplate({ tag: "form", attributes: { class: ["ck", "ck-image-insert-form"], tabindex: -1 }, children: this.children, }); } render() { super.render(); ru({ view: this }); for (const t of this._focusables) { this.focusTracker.add(t.element); } this.keystrokes.listenTo(this.element); const t = (t) => t.stopPropagation(); this.keystrokes.set("arrowright", t); this.keystrokes.set("arrowleft", t); this.keystrokes.set("arrowup", t); this.keystrokes.set("arrowdown", t); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this._focusCycler.focusFirst(); } } function _U(t) { return "focusCycler" in t; } class CU extends au { static get pluginName() { return "ImageInsertUI"; } static get requires() { return [zH]; } constructor(t) { super(t); this._integrations = new Map(); t.config.define("image.insert.integrations", [ "upload", "assetManager", "url", ]); } init() { const t = this.editor; const e = t.model.document.selection; const n = t.plugins.get("ImageUtils"); this.set("isImageSelected", false); this.listenTo(t.model.document, "change", () => { this.isImageSelected = n.isImage(e.getSelectedElement()); }); const i = (t) => this._createToolbarComponent(t); t.ui.componentFactory.add("insertImage", i); t.ui.componentFactory.add("imageInsert", i); } registerIntegration({ name: t, observable: e, buttonViewCreator: n, formViewCreator: i, requiresForm: o, }) { if (this._integrations.has(t)) { z("image-insert-integration-exists", { name: t }); } this._integrations.set(t, { observable: e, buttonViewCreator: n, formViewCreator: i, requiresForm: !!o, }); } _createToolbarComponent(t) { const e = this.editor; const n = t.t; const i = this._prepareIntegrations(); if (!i.length) { return null; } let o; const r = i[0]; if (i.length == 1) { if (!r.requiresForm) { return r.buttonViewCreator(true); } o = r.buttonViewCreator(true); } else { const e = r.buttonViewCreator(false); o = new Hx(t, e); o.tooltip = true; o.bind("label").to(this, "isImageSelected", (t) => t ? n("Replace image") : n("Insert image") ); } const s = (this.dropdownView = Zx(t, o)); const a = i.map(({ observable: t }) => typeof t == "function" ? t() : t ); s.bind("isEnabled").toMany(a, "isEnabled", (...t) => t.some((t) => t) ); s.once("change:isOpen", () => { const t = i.map(({ formViewCreator: t }) => t(i.length == 1)); const n = new AU(e.locale, t); s.panelView.children.add(n); }); return s; } _prepareIntegrations() { const t = this.editor; const e = t.config.get("image.insert.integrations"); const n = []; if (!e.length) { z("image-insert-integrations-not-specified"); return n; } for (const t of e) { if (!this._integrations.has(t)) { if (!["upload", "assetManager", "url"].includes(t)) { z("image-insert-unknown-integration", { item: t }); } continue; } n.push(this._integrations.get(t)); } if (!n.length) { z("image-insert-integrations-not-registered"); } return n; } } var vU = n(2051); var yU = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; yU.insert = "head"; yU.singleton = true; var xU = Zd()(vU.A, yU); const EU = vU.A.locals || {}; class DU extends au { static get requires() { return [fU, tP, JH, CU]; } static get pluginName() { return "ImageBlock"; } } class SU extends au { static get requires() { return [aU, cU, zH, gU, iz]; } static get pluginName() { return "ImageInlineEditing"; } init() { const t = this.editor; const e = t.model.schema; e.register("imageInline", { inheritAllFrom: "$inlineObject", allowAttributes: ["alt", "src", "srcset"], }); e.addChildCheck((t, e) => { if (t.endsWith("caption") && e.name === "imageInline") { return false; } }); this._setupConversion(); if (t.plugins.has("ImageBlockEditing")) { t.commands.add( "imageTypeInline", new lU(this.editor, "imageInline") ); this._setupClipboardIntegration(); } } _setupConversion() { const t = this.editor; const e = t.t; const n = t.conversion; const i = t.plugins.get("ImageUtils"); n.for("dataDowncast").elementToElement({ model: "imageInline", view: (t, { writer: e }) => e.createEmptyElement("img"), }); n.for("editingDowncast").elementToStructure({ model: "imageInline", view: (t, { writer: n }) => i.toImageWidget(SH(n), n, e("image widget")), }); n.for("downcast") .add(iU(i, "imageInline", "src")) .add(iU(i, "imageInline", "alt")) .add(eU(i, "imageInline")); n.for("upcast").elementToElement({ view: BH(t, "imageInline"), model: (t, { writer: e }) => e.createElement( "imageInline", t.hasAttribute("src") ? { src: t.getAttribute("src") } : undefined ), }); } _setupClipboardIntegration() { const t = this.editor; const e = t.model; const n = t.editing.view; const i = t.plugins.get("ImageUtils"); const o = t.plugins.get("ClipboardPipeline"); this.listenTo(o, "inputTransformation", (o, r) => { const s = Array.from(r.content.getChildren()); let a; if (!s.every(i.isBlockImageView)) { return; } if (r.targetRanges) { a = t.editing.mapper.toModelRange(r.targetRanges[0]); } else { a = e.document.selection.getFirstRange(); } const c = e.createSelection(a); if (MH(e.schema, c) === "imageInline") { const t = new $A(n.document); const e = s.map((e) => { if (e.childCount === 1) { Array.from(e.getAttributes()).forEach((n) => t.setAttribute(...n, i.findViewImgElement(e)) ); return e.getChild(0); } else { return e; } }); r.content = t.createDocumentFragment(e); } }); this.listenTo(o, "contentInsertion", (t, n) => { if (n.method !== "paste") { return; } e.change((t) => { const e = t.createRangeIn(n.content); for (const t of e.getItems()) { if (t.is("element", "imageInline")) { i.setImageNaturalSizeAttributes(t); } } }); }); } } class TU extends au { static get requires() { return [SU, tP, JH, CU]; } static get pluginName() { return "ImageInline"; } } class BU extends au { static get requires() { return [DU, TU]; } static get pluginName() { return "Image"; } } class MU extends au { static get pluginName() { return "ImageCaptionUtils"; } static get requires() { return [zH]; } getCaptionFromImageModelElement(t) { for (const e of t.getChildren()) { if (!!e && e.is("element", "caption")) { return e; } } return null; } getCaptionFromModelSelection(t) { const e = this.editor.plugins.get("ImageUtils"); const n = t.getFirstPosition().findAncestor("caption"); if (!n) { return null; } if (e.isBlockImage(n.parent)) { return n; } return null; } matchImageCaptionViewElement(t) { const e = this.editor.plugins.get("ImageUtils"); if (t.name == "figcaption" && e.isBlockImageView(t.parent)) { return { name: true }; } return null; } } class IU extends lu { refresh() { const t = this.editor; const e = t.plugins.get("ImageCaptionUtils"); const n = t.plugins.get("ImageUtils"); if (!t.plugins.has(fU)) { this.isEnabled = false; this.value = false; return; } const i = t.model.document.selection; const o = i.getSelectedElement(); if (!o) { const t = e.getCaptionFromModelSelection(i); this.isEnabled = !!t; this.value = !!t; return; } this.isEnabled = n.isImage(o); if (!this.isEnabled) { this.value = false; } else { this.value = !!e.getCaptionFromImageModelElement(o); } } execute(t = {}) { const { focusCaptionOnShow: e } = t; this.editor.model.change((t) => { if (this.value) { this._hideImageCaption(t); } else { this._showImageCaption(t, e); } }); } _showImageCaption(t, e) { const n = this.editor.model; const i = n.document.selection; const o = this.editor.plugins.get("ImageCaptionEditing"); const r = this.editor.plugins.get("ImageUtils"); let s = i.getSelectedElement(); const a = o._getSavedCaption(s); if (r.isInlineImage(s)) { this.editor.execute("imageTypeBlock"); s = i.getSelectedElement(); } const c = a || t.createElement("caption"); t.append(c, s); if (e) { t.setSelection(c, "in"); } } _hideImageCaption(t) { const e = this.editor; const n = e.model.document.selection; const i = e.plugins.get("ImageCaptionEditing"); const o = e.plugins.get("ImageCaptionUtils"); let r = n.getSelectedElement(); let s; if (r) { s = o.getCaptionFromImageModelElement(r); } else { s = o.getCaptionFromModelSelection(n); r = s.parent; } i._saveCaption(r, s); t.setSelection(r, "on"); t.remove(s); } } class LU extends au { static get requires() { return [zH, MU]; } static get pluginName() { return "ImageCaptionEditing"; } constructor(t) { super(t); this._savedCaptionsMap = new WeakMap(); } init() { const t = this.editor; const e = t.model.schema; if (!e.isRegistered("caption")) { e.register("caption", { allowIn: "imageBlock", allowContentOf: "$block", isLimit: true, }); } else { e.extend("caption", { allowIn: "imageBlock" }); } t.commands.add("toggleImageCaption", new IU(this.editor)); this._setupConversion(); this._setupImageTypeCommandsIntegration(); this._registerCaptionReconversion(); } _setupConversion() { const t = this.editor; const e = t.editing.view; const n = t.plugins.get("ImageUtils"); const i = t.plugins.get("ImageCaptionUtils"); const o = t.t; t.conversion .for("upcast") .elementToElement({ view: (t) => i.matchImageCaptionViewElement(t), model: "caption", }); t.conversion.for("dataDowncast").elementToElement({ model: "caption", view: (t, { writer: e }) => { if (!n.isBlockImage(t.parent)) { return null; } return e.createContainerElement("figcaption"); }, }); t.conversion.for("editingDowncast").elementToElement({ model: "caption", view: (t, { writer: i }) => { if (!n.isBlockImage(t.parent)) { return null; } const r = i.createEditableElement("figcaption"); i.setCustomProperty("imageCaption", true, r); r.placeholder = o("Enter image caption"); _u({ view: e, element: r, keepOnFocus: true }); const s = t.parent.getAttribute("alt"); const a = s ? o("Caption for image: %0", [s]) : o("Caption for the image"); return bz(r, i, { label: a }); }, }); } _setupImageTypeCommandsIntegration() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = t.plugins.get("ImageCaptionUtils"); const i = t.commands.get("imageTypeInline"); const o = t.commands.get("imageTypeBlock"); const r = (t) => { if (!t.return) { return; } const { oldElement: i, newElement: o } = t.return; if (!i) { return; } if (e.isBlockImage(i)) { const t = n.getCaptionFromImageModelElement(i); if (t) { this._saveCaption(o, t); return; } } const r = this._getSavedCaption(i); if (r) { this._saveCaption(o, r); } }; if (i) { this.listenTo(i, "execute", r, { priority: "low" }); } if (o) { this.listenTo(o, "execute", r, { priority: "low" }); } } _getSavedCaption(t) { const e = this._savedCaptionsMap.get(t); return e ? wp.fromJSON(e) : null; } _saveCaption(t, e) { this._savedCaptionsMap.set(t, e.toJSON()); } _registerCaptionReconversion() { const t = this.editor; const e = t.model; const n = t.plugins.get("ImageUtils"); const i = t.plugins.get("ImageCaptionUtils"); e.document.on("change:data", () => { const o = e.document.differ.getChanges(); for (const e of o) { if (e.attributeKey !== "alt") { continue; } const o = e.range.start.nodeAfter; if (n.isBlockImage(o)) { const e = i.getCaptionFromImageModelElement(o); if (!e) { return; } t.editing.reconvertItem(e); } } }); } } class NU extends (null && Plugin) { static get requires() { return [ImageCaptionUtils]; } static get pluginName() { return "ImageCaptionUI"; } init() { const t = this.editor; const e = t.editing.view; const n = t.plugins.get("ImageCaptionUtils"); const i = t.t; t.ui.componentFactory.add("toggleImageCaption", (o) => { const r = t.commands.get("toggleImageCaption"); const s = new ButtonView(o); s.set({ icon: icons.caption, tooltip: true, isToggleable: true }); s.bind("isOn", "isEnabled").to(r, "value", "isEnabled"); s.bind("label").to(r, "value", (t) => t ? i("Toggle caption off") : i("Toggle caption on") ); this.listenTo(s, "execute", () => { t.execute("toggleImageCaption", { focusCaptionOnShow: true }); const i = n.getCaptionFromModelSelection( t.model.document.selection ); if (i) { const n = t.editing.mapper.toViewElement(i); e.scrollToTheSelection(); e.change((t) => { t.addClass("image__caption_highlighted", n); }); } t.editing.view.focus(); }); return s; }); } } var zU = n(7369); var PU = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; PU.insert = "head"; PU.singleton = true; var RU = Zd()(zU.A, PU); const VU = zU.A.locals || {}; class OU extends (null && Plugin) { static get requires() { return [ImageCaptionEditing, ImageCaptionUI]; } static get pluginName() { return "ImageCaption"; } } function FU(t) { const e = t.map((t) => t.replace("+", "\\+")); return new RegExp(`^image\\/(${e.join("|")})$`); } function jU(t) { return new Promise((e, n) => { const i = t.getAttribute("src"); fetch(i) .then((t) => t.blob()) .then((t) => { const n = UU(t, i); const o = n.replace("image/", ""); const r = `image.${o}`; const s = new File([t], r, { type: n }); e(s); }) .catch((t) => t && t.name === "TypeError" ? $U(i).then(e).catch(n) : n(t) ); }); } function HU(t, e) { if (!t.isInlineImageView(e) || !e.getAttribute("src")) { return false; } return ( !!e.getAttribute("src").match(/^data:image\/\w+;base64,/g) || !!e.getAttribute("src").match(/^blob:/g) ); } function UU(t, e) { if (t.type) { return t.type; } else if (e.match(/data:(image\/\w+);base64/)) { return e.match(/data:(image\/\w+);base64/)[1].toLowerCase(); } else { return "image/jpeg"; } } function $U(t) { return qU(t).then((e) => { const n = UU(e, t); const i = n.replace("image/", ""); const o = `image.${i}`; return new File([e], o, { type: n }); }); } function qU(t) { return new Promise((n, i) => { const o = e.document.createElement("img"); o.addEventListener("load", () => { const t = e.document.createElement("canvas"); t.width = o.width; t.height = o.height; const r = t.getContext("2d"); r.drawImage(o, 0, 0); t.toBlob((t) => (t ? n(t) : i())); }); o.addEventListener("error", () => i()); o.src = t; }); } class WU extends au { static get pluginName() { return "ImageUploadUI"; } init() { const t = this.editor; const e = t.t; const n = () => { const t = this._createButton(ly); t.set({ label: e("Upload image from computer"), tooltip: true }); return t; }; t.ui.componentFactory.add("uploadImage", n); t.ui.componentFactory.add("imageUpload", n); t.ui.componentFactory.add("menuBar:uploadImage", () => { const t = this._createButton(AM); t.label = e("Image from computer"); return t; }); if (t.plugins.has("ImageInsertUI")) { const n = t.plugins.get("ImageInsertUI"); n.registerIntegration({ name: "upload", observable: () => t.commands.get("uploadImage"), buttonViewCreator: () => { const i = t.ui.componentFactory.create("uploadImage"); i.bind("label").to(n, "isImageSelected", (t) => t ? e("Replace image from computer") : e("Upload image from computer") ); return i; }, formViewCreator: () => { const i = t.ui.componentFactory.create("uploadImage"); i.withText = true; i.bind("label").to(n, "isImageSelected", (t) => t ? e("Replace from computer") : e("Upload from computer") ); i.on("execute", () => { n.dropdownView.isOpen = false; }); return i; }, }); } } _createButton(t) { const e = this.editor; const n = e.locale; const i = e.commands.get("uploadImage"); const o = e.config.get("image.upload.types"); const r = FU(o); const s = new t(e.locale); const a = n.t; s.set({ acceptedType: o.map((t) => `image/${t}`).join(","), allowMultipleFiles: true, label: a("Upload image from computer"), icon: Bv.imageUpload, }); s.bind("isEnabled").to(i); s.on("done", (t, n) => { const i = Array.from(n).filter((t) => r.test(t.type)); if (i.length) { e.execute("uploadImage", { file: i }); e.editing.view.focus(); } }); return s; } } class GU extends mt() { constructor() { super(); const t = new window.FileReader(); this._reader = t; this._data = undefined; this.set("loaded", 0); t.onprogress = (t) => { this.loaded = t.loaded; }; } get error() { return this._reader.error; } get data() { return this._data; } read(t) { const e = this._reader; this.total = t.size; return new Promise((n, i) => { e.onload = () => { const t = e.result; this._data = t; n(t); }; e.onerror = () => { i("error"); }; e.onabort = () => { i("aborted"); }; this._reader.readAsDataURL(t); }); } abort() { this._reader.abort(); } } class KU extends au { constructor() { super(...arguments); this.loaders = new nd(); this._loadersMap = new Map(); this._pendingAction = null; } static get pluginName() { return "FileRepository"; } static get requires() { return [AC]; } init() { this.loaders.on("change", () => this._updatePendingAction()); this.set("uploaded", 0); this.set("uploadTotal", null); this.bind("uploadedPercent").to( this, "uploaded", this, "uploadTotal", (t, e) => (e ? (t / e) * 100 : 0) ); } getLoader(t) { return this._loadersMap.get(t) || null; } createLoader(t) { if (!this.createUploadAdapter) { z("filerepository-no-upload-adapter"); return null; } const e = new YU(Promise.resolve(t), this.createUploadAdapter); this.loaders.add(e); this._loadersMap.set(t, e); if (t instanceof Promise) { e.file .then((t) => { this._loadersMap.set(t, e); }) .catch(() => {}); } e.on("change:uploaded", () => { let t = 0; for (const e of this.loaders) { t += e.uploaded; } this.uploaded = t; }); e.on("change:uploadTotal", () => { let t = 0; for (const e of this.loaders) { if (e.uploadTotal) { t += e.uploadTotal; } } this.uploadTotal = t; }); return e; } destroyLoader(t) { const e = t instanceof YU ? t : this.getLoader(t); e._destroy(); this.loaders.remove(e); this._loadersMap.forEach((t, n) => { if (t === e) { this._loadersMap.delete(n); } }); } _updatePendingAction() { const t = this.editor.plugins.get(AC); if (this.loaders.length) { if (!this._pendingAction) { const e = this.editor.t; const n = (t) => `${e("Upload in progress")} ${parseInt(t)}%.`; this._pendingAction = t.add(n(this.uploadedPercent)); this._pendingAction .bind("message") .to(this, "uploadedPercent", n); } } else { t.remove(this._pendingAction); this._pendingAction = null; } } } class YU extends mt() { constructor(t, e) { super(); this.id = T(); this._filePromiseWrapper = this._createFilePromiseWrapper(t); this._adapter = e(this); this._reader = new GU(); this.set("status", "idle"); this.set("uploaded", 0); this.set("uploadTotal", null); this.bind("uploadedPercent").to( this, "uploaded", this, "uploadTotal", (t, e) => (e ? (t / e) * 100 : 0) ); this.set("uploadResponse", null); } get file() { if (!this._filePromiseWrapper) { return Promise.resolve(null); } else { return this._filePromiseWrapper.promise.then((t) => this._filePromiseWrapper ? t : null ); } } get data() { return this._reader.data; } read() { if (this.status != "idle") { throw new N("filerepository-read-wrong-status", this); } this.status = "reading"; return this.file .then((t) => this._reader.read(t)) .then((t) => { if (this.status !== "reading") { throw this.status; } this.status = "idle"; return t; }) .catch((t) => { if (t === "aborted") { this.status = "aborted"; throw "aborted"; } this.status = "error"; throw this._reader.error ? this._reader.error : t; }); } upload() { if (this.status != "idle") { throw new N("filerepository-upload-wrong-status", this); } this.status = "uploading"; return this.file .then(() => this._adapter.upload()) .then((t) => { this.uploadResponse = t; this.status = "idle"; return t; }) .catch((t) => { if (this.status === "aborted") { throw "aborted"; } this.status = "error"; throw t; }); } abort() { const t = this.status; this.status = "aborted"; if (!this._filePromiseWrapper.isFulfilled) { this._filePromiseWrapper.promise.catch(() => {}); this._filePromiseWrapper.rejecter("aborted"); } else if (t == "reading") { this._reader.abort(); } else if (t == "uploading" && this._adapter.abort) { this._adapter.abort(); } this._destroy(); } _destroy() { this._filePromiseWrapper = undefined; this._reader = undefined; this._adapter = undefined; this.uploadResponse = undefined; } _createFilePromiseWrapper(t) { const e = {}; e.promise = new Promise((n, i) => { e.rejecter = i; e.isFulfilled = false; t.then((t) => { e.isFulfilled = true; n(t); }).catch((t) => { e.isFulfilled = true; i(t); }); }); return e; } } class QU extends (null && Plugin) { static get requires() { return [FileRepository]; } static get pluginName() { return "Base64UploadAdapter"; } init() { this.editor.plugins.get(FileRepository).createUploadAdapter = (t) => new ZU(t); } } class ZU { constructor(t) { this.loader = t; } upload() { return new Promise((t, e) => { const n = (this.reader = new window.FileReader()); n.addEventListener("load", () => { t({ default: n.result }); }); n.addEventListener("error", (t) => { e(t); }); n.addEventListener("abort", () => { e(); }); this.loader.file.then((t) => { n.readAsDataURL(t); }); }); } abort() { this.reader.abort(); } } class JU extends (null && Plugin) { static get requires() { return [FileRepository]; } static get pluginName() { return "SimpleUploadAdapter"; } init() { const t = this.editor.config.get("simpleUpload"); if (!t) { return; } if (!t.uploadUrl) { logWarning("simple-upload-adapter-missing-uploadurl"); return; } this.editor.plugins.get(FileRepository).createUploadAdapter = (e) => new XU(e, t); } } class XU { constructor(t, e) { this.loader = t; this.options = e; } upload() { return this.loader.file.then( (t) => new Promise((e, n) => { this._initRequest(); this._initListeners(e, n, t); this._sendRequest(t); }) ); } abort() { if (this.xhr) { this.xhr.abort(); } } _initRequest() { const t = (this.xhr = new XMLHttpRequest()); t.open("POST", this.options.uploadUrl, true); t.responseType = "json"; } _initListeners(t, e, n) { const i = this.xhr; const o = this.loader; const r = `Couldn't upload file: ${n.name}.`; i.addEventListener("error", () => e(r)); i.addEventListener("abort", () => e()); i.addEventListener("load", () => { const n = i.response; if (!n || n.error) { return e(n && n.error && n.error.message ? n.error.message : r); } const o = n.url ? { default: n.url } : n.urls; t({ ...n, urls: o }); }); if (i.upload) { i.upload.addEventListener("progress", (t) => { if (t.lengthComputable) { o.uploadTotal = t.total; o.uploaded = t.loaded; } }); } } _sendRequest(t) { const e = this.options.headers || {}; const n = this.options.withCredentials || false; for (const t of Object.keys(e)) { this.xhr.setRequestHeader(t, e[t]); } this.xhr.withCredentials = n; const i = new FormData(); i.append("upload", t); this.xhr.send(i); } } var t$ = n(2209); var e$ = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; e$.insert = "head"; e$.singleton = true; var n$ = Zd()(t$.A, e$); const i$ = t$.A.locals || {}; var o$ = n(9967); var r$ = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; r$.insert = "head"; r$.singleton = true; var s$ = Zd()(o$.A, r$); const a$ = o$.A.locals || {}; var c$ = n(2021); var l$ = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; l$.insert = "head"; l$.singleton = true; var d$ = Zd()(c$.A, l$); const u$ = c$.A.locals || {}; class h$ extends au { static get pluginName() { return "ImageUploadProgress"; } constructor(t) { super(t); this.uploadStatusChange = (t, e, n) => { const i = this.editor; const o = e.item; const r = o.getAttribute("uploadId"); if (!n.consumable.consume(e.item, t.name)) { return; } const s = i.plugins.get("ImageUtils"); const a = i.plugins.get(KU); const c = r ? e.attributeNewValue : null; const l = this.placeholder; const d = i.editing.mapper.toViewElement(o); const u = n.writer; if (c == "reading") { m$(d, u); f$(s, l, d, u); return; } if (c == "uploading") { const t = a.loaders.get(r); m$(d, u); if (!t) { f$(s, l, d, u); } else { p$(d, u); k$(d, u, t, i.editing.view); y$(s, d, u, t); } return; } if (c == "complete" && a.loaders.get(r)) { w$(d, u, i.editing.view); } b$(d, u); p$(d, u); g$(d, u); }; this.placeholder = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; } init() { const t = this.editor; if (t.plugins.has("ImageBlockEditing")) { t.editing.downcastDispatcher.on( "attribute:uploadStatus:imageBlock", this.uploadStatusChange ); } if (t.plugins.has("ImageInlineEditing")) { t.editing.downcastDispatcher.on( "attribute:uploadStatus:imageInline", this.uploadStatusChange ); } } } function m$(t, e) { if (!t.hasClass("ck-appear")) { e.addClass("ck-appear", t); } } function g$(t, e) { e.removeClass("ck-appear", t); } function f$(t, e, n, i) { if (!n.hasClass("ck-image-upload-placeholder")) { i.addClass("ck-image-upload-placeholder", n); } const o = t.findViewImgElement(n); if (o.getAttribute("src") !== e) { i.setAttribute("src", e, o); } if (!C$(n, "placeholder")) { i.insert(i.createPositionAfter(o), _$(i)); } } function p$(t, e) { if (t.hasClass("ck-image-upload-placeholder")) { e.removeClass("ck-image-upload-placeholder", t); } v$(t, e, "placeholder"); } function k$(t, e, n, i) { const o = A$(e); e.insert(e.createPositionAt(t, "end"), o); n.on("change:uploadedPercent", (t, e, n) => { i.change((t) => { t.setStyle("width", n + "%", o); }); }); } function b$(t, e) { v$(t, e, "progressBar"); } function w$(t, e, n) { const i = e.createUIElement("div", { class: "ck-image-upload-complete-icon", }); e.insert(e.createPositionAt(t, "end"), i); setTimeout(() => { n.change((t) => t.remove(t.createRangeOn(i))); }, 3e3); } function A$(t) { const e = t.createUIElement("div", { class: "ck-progress-bar" }); t.setCustomProperty("progressBar", true, e); return e; } function _$(t) { const e = t.createUIElement("div", { class: "ck-upload-placeholder-loader", }); t.setCustomProperty("placeholder", true, e); return e; } function C$(t, e) { for (const n of t.getChildren()) { if (n.getCustomProperty(e)) { return n; } } } function v$(t, e, n) { const i = C$(t, n); if (i) { e.remove(e.createRangeOn(i)); } } function y$(t, e, n, i) { if (i.data) { const o = t.findViewImgElement(e); n.setAttribute("src", i.data, o); } } class x$ extends lu { refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = t.model.document.selection.getSelectedElement(); this.isEnabled = e.isImageAllowed() || e.isImage(n); } execute(t) { const e = rl(t.file); const n = this.editor.model.document.selection; const i = this.editor.plugins.get("ImageUtils"); const o = Object.fromEntries(n.getAttributes()); e.forEach((t, e) => { const r = n.getSelectedElement(); if (e && r && i.isImage(r)) { const e = this.editor.model.createPositionAfter(r); this._uploadImage(t, o, e); } else { this._uploadImage(t, o); } }); } _uploadImage(t, e, n) { const i = this.editor; const o = i.plugins.get(KU); const r = o.createLoader(t); const s = i.plugins.get("ImageUtils"); if (!r) { return; } s.insertImage({ ...e, uploadId: r.id }, n); } } class E$ extends au { static get requires() { return [KU, dT, iz, zH]; } static get pluginName() { return "ImageUploadEditing"; } constructor(t) { super(t); t.config.define("image", { upload: { types: ["jpeg", "png", "gif", "bmp", "webp", "tiff"] }, }); this._uploadImageElements = new Map(); } init() { const t = this.editor; const e = t.model.document; const n = t.conversion; const i = t.plugins.get(KU); const o = t.plugins.get("ImageUtils"); const r = t.plugins.get("ClipboardPipeline"); const s = FU(t.config.get("image.upload.types")); const a = new x$(t); t.commands.add("uploadImage", a); t.commands.add("imageUpload", a); n.for("upcast").attributeToAttribute({ view: { name: "img", key: "uploadId" }, model: "uploadId", }); this.listenTo(t.editing.view.document, "clipboardInput", (e, n) => { if (D$(n.dataTransfer)) { return; } const i = Array.from(n.dataTransfer.files).filter((t) => { if (!t) { return false; } return s.test(t.type); }); if (!i.length) { return; } e.stop(); t.model.change((e) => { if (n.targetRanges) { e.setSelection( n.targetRanges.map((e) => t.editing.mapper.toModelRange(e)) ); } t.execute("uploadImage", { file: i }); }); }); this.listenTo(r, "inputTransformation", (e, n) => { const r = Array.from(t.editing.view.createRangeIn(n.content)) .map((t) => t.item) .filter((t) => HU(o, t) && !t.getAttribute("uploadProcessed")) .map((t) => ({ promise: jU(t), imageElement: t })); if (!r.length) { return; } const s = new $A(t.editing.view.document); for (const t of r) { s.setAttribute("uploadProcessed", true, t.imageElement); const e = i.createLoader(t.promise); if (e) { s.setAttribute("src", "", t.imageElement); s.setAttribute("uploadId", e.id, t.imageElement); } } }); t.editing.view.document.on("dragover", (t, e) => { e.preventDefault(); }); e.on("change", () => { const n = e.differ .getChanges({ includeChangesInGraveyard: true }) .reverse(); const o = new Set(); for (const e of n) { if (e.type == "insert" && e.name != "$text") { const n = e.position.nodeAfter; const r = e.position.root.rootName == "$graveyard"; for (const e of S$(t, n)) { const t = e.getAttribute("uploadId"); if (!t) { continue; } const n = i.loaders.get(t); if (!n) { continue; } if (r) { if (!o.has(t)) { n.abort(); } } else { o.add(t); this._uploadImageElements.set(t, e); if (n.status == "idle") { this._readAndUpload(n); } } } } } }); this.on( "uploadComplete", (t, { imageElement: e, data: n }) => { const i = n.urls ? n.urls : n; this.editor.model.change((t) => { t.setAttribute("src", i.default, e); this._parseAndSetSrcsetAttributeOnImage(i, e, t); o.setImageNaturalSizeAttributes(e); }); }, { priority: "low" } ); } afterInit() { const t = this.editor.model.schema; if (this.editor.plugins.has("ImageBlockEditing")) { t.extend("imageBlock", { allowAttributes: ["uploadId", "uploadStatus"], }); } if (this.editor.plugins.has("ImageInlineEditing")) { t.extend("imageInline", { allowAttributes: ["uploadId", "uploadStatus"], }); } } _readAndUpload(t) { const e = this.editor; const n = e.model; const i = e.locale.t; const o = e.plugins.get(KU); const r = e.plugins.get(dT); const s = e.plugins.get("ImageUtils"); const c = this._uploadImageElements; n.enqueueChange({ isUndoable: false }, (e) => { e.setAttribute("uploadStatus", "reading", c.get(t.id)); }); return t .read() .then(() => { const o = t.upload(); const r = c.get(t.id); if (a.isSafari) { const t = e.editing.mapper.toViewElement(r); const n = s.findViewImgElement(t); e.editing.view.once("render", () => { if (!n.parent) { return; } const t = e.editing.view.domConverter.mapViewToDom(n.parent); if (!t) { return; } const i = t.style.display; t.style.display = "none"; t._ckHack = t.offsetHeight; t.style.display = i; }); } if (e.ui) { e.ui.ariaLiveAnnouncer.announce(i("Uploading image")); } n.enqueueChange({ isUndoable: false }, (t) => { t.setAttribute("uploadStatus", "uploading", r); }); return o; }) .then((o) => { n.enqueueChange({ isUndoable: false }, (n) => { const r = c.get(t.id); n.setAttribute("uploadStatus", "complete", r); if (e.ui) { e.ui.ariaLiveAnnouncer.announce(i("Image upload complete")); } this.fire("uploadComplete", { data: o, imageElement: r }); }); l(); }) .catch((o) => { if (e.ui) { e.ui.ariaLiveAnnouncer.announce(i("Error during image upload")); } if (t.status !== "error" && t.status !== "aborted") { throw o; } if (t.status == "error" && o) { r.showWarning(o, { title: i("Upload failed"), namespace: "upload", }); } n.enqueueChange({ isUndoable: false }, (e) => { e.remove(c.get(t.id)); }); l(); }); function l() { n.enqueueChange({ isUndoable: false }, (e) => { const n = c.get(t.id); e.removeAttribute("uploadId", n); e.removeAttribute("uploadStatus", n); c.delete(t.id); }); o.destroyLoader(t); } } _parseAndSetSrcsetAttributeOnImage(t, e, n) { let i = 0; const o = Object.keys(t) .filter((t) => { const e = parseInt(t, 10); if (!isNaN(e)) { i = Math.max(i, e); return true; } }) .map((e) => `${t[e]} ${e}w`) .join(", "); if (o != "") { const t = { srcset: o }; if (!e.hasAttribute("width") && !e.hasAttribute("height")) { t.width = i; } n.setAttributes(t, e); } } } function D$(t) { return ( Array.from(t.types).includes("text/html") && t.getData("text/html") !== "" ); } function S$(t, e) { const n = t.plugins.get("ImageUtils"); return Array.from(t.model.createRangeOn(e)) .filter((t) => n.isImage(t.item)) .map((t) => t.item); } class T$ extends au { static get pluginName() { return "ImageUpload"; } static get requires() { return [E$, WU, h$]; } } class B$ extends nu { constructor(t) { super(t); this.set("imageURLInputValue", ""); this.set("isImageSelected", false); this.set("isEnabled", true); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusables = new Ad(); this.focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.urlInputView = this._createUrlInputView(); this.insertButtonView = this._createInsertButton(); this.cancelButtonView = this._createCancelButton(); this._focusables.addMany([ this.urlInputView, this.insertButtonView, this.cancelButtonView, ]); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-image-insert-url"] }, children: [ this.urlInputView, { tag: "div", attributes: { class: ["ck", "ck-image-insert-url__action-row"], }, children: [this.insertButtonView, this.cancelButtonView], }, ], }); } render() { super.render(); for (const t of this._focusables) { this.focusTracker.add(t.element); } this.keystrokes.listenTo(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } _createUrlInputView() { const t = this.locale; const e = t.t; const n = new Uy(t, uE); n.bind("label").to(this, "isImageSelected", (t) => t ? e("Update image URL") : e("Insert image via URL") ); n.bind("isEnabled").to(this); n.fieldView.placeholder = "https://example.com/image.png"; n.fieldView .bind("value") .to(this, "imageURLInputValue", (t) => t || ""); n.fieldView.on("input", () => { this.imageURLInputValue = n.fieldView.element.value.trim(); }); return n; } _createInsertButton() { const t = this.locale; const e = t.t; const n = new iy(t); n.set({ icon: Bv.check, class: "ck-button-save", type: "submit", withText: true, }); n.bind("label").to(this, "isImageSelected", (t) => t ? e("Update") : e("Insert") ); n.bind("isEnabled").to( this, "imageURLInputValue", this, "isEnabled", (...t) => t.every((t) => t) ); n.delegate("execute").to(this, "submit"); return n; } _createCancelButton() { const t = this.locale; const e = t.t; const n = new iy(t); n.set({ label: e("Cancel"), icon: Bv.cancel, class: "ck-button-cancel", withText: true, }); n.bind("isEnabled").to(this); n.delegate("execute").to(this, "cancel"); return n; } focus(t) { if (t === -1) { this.focusCycler.focusLast(); } else { this.focusCycler.focusFirst(); } } } class M$ extends (null && Plugin) { static get pluginName() { return "ImageInsertViaUrlUI"; } static get requires() { return [ImageInsertUI]; } afterInit() { this._imageInsertUI = this.editor.plugins.get("ImageInsertUI"); this._imageInsertUI.registerIntegration({ name: "url", observable: () => this.editor.commands.get("insertImage"), requiresForm: true, buttonViewCreator: (t) => this._createInsertUrlButton(t), formViewCreator: (t) => this._createInsertUrlView(t), }); } _createInsertUrlView(t) { const e = this.editor; const n = e.locale; const i = n.t; const o = e.commands.get("replaceImageSource"); const r = e.commands.get("insertImage"); const s = new ImageInsertUrlView(n); const a = t ? null : new CollapsibleView(n, [s]); s.bind("isImageSelected").to(this._imageInsertUI); s.bind("isEnabled").toMany([r, o], "isEnabled", (...t) => t.some((t) => t) ); s.imageURLInputValue = o.value || ""; this._imageInsertUI.dropdownView.on( "change:isOpen", () => { if (this._imageInsertUI.dropdownView.isOpen) { s.imageURLInputValue = o.value || ""; if (a) { a.isCollapsed = true; } } }, { priority: "low" } ); s.on("submit", () => { if (o.isEnabled) { e.execute("replaceImageSource", { source: s.imageURLInputValue }); } else { e.execute("insertImage", { source: s.imageURLInputValue }); } this._closePanel(); }); s.on("cancel", () => this._closePanel()); if (a) { a.set({ isCollapsed: true }); a.bind("label").to(this._imageInsertUI, "isImageSelected", (t) => t ? i("Update image URL") : i("Insert image via URL") ); return a; } return s; } _createInsertUrlButton(t) { const e = t ? DropdownButtonView : ButtonView; const n = this.editor; const i = new e(n.locale); const o = n.locale.t; i.set({ icon: icons.imageUrl, tooltip: true }); i.bind("label").to(this._imageInsertUI, "isImageSelected", (t) => t ? o("Update image URL") : o("Insert image via URL") ); return i; } _closePanel() { this.editor.editing.view.focus(); this._imageInsertUI.dropdownView.isOpen = false; } } class I$ extends (null && Plugin) { static get pluginName() { return "ImageInsertViaUrl"; } static get requires() { return [ImageInsertViaUrlUI, ImageInsertUI]; } } class L$ extends (null && Plugin) { static get pluginName() { return "ImageInsert"; } static get requires() { return [ImageUpload, ImageInsertViaUrl, ImageInsertUI]; } } function N$(t, e) { return function (n, i) { if (n == null) { return n; } if (!Uo(n)) { return t(n, i); } var o = n.length, r = e ? o : -1, s = Object(n); while (e ? r-- : ++r < o) { if (i(s[r], r, s) === false) { break; } } return n; }; } const z$ = N$; var P$ = z$(vN); const R$ = P$; function V$(t, e) { var n = -1, i = Uo(t) ? Array(t.length) : []; R$(t, function (t, o, r) { i[++n] = e(t, o, r); }); return i; } const O$ = V$; function F$(t, e) { var n = Zt(t) ? uh : O$; return n(t, XN(e, 3)); } const j$ = F$; class H$ extends lu { refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = e.getClosestSelectedImageElement( t.model.document.selection ); this.isEnabled = !!n; if (!n || !n.hasAttribute("resizedWidth")) { this.value = null; } else { this.value = { width: n.getAttribute("resizedWidth"), height: null, }; } } execute(t) { const e = this.editor; const n = e.model; const i = e.plugins.get("ImageUtils"); const o = i.getClosestSelectedImageElement(n.document.selection); this.value = { width: t.width, height: null }; if (o) { n.change((e) => { e.setAttribute("resizedWidth", t.width, o); e.removeAttribute("resizedHeight", o); i.setImageNaturalSizeAttributes(o); }); } } } class U$ extends au { static get requires() { return [zH]; } static get pluginName() { return "ImageResizeEditing"; } constructor(t) { super(t); t.config.define("image", { resizeUnit: "%", resizeOptions: [ { name: "resizeImage:original", value: null, icon: "original" }, { name: "resizeImage:custom", value: "custom", icon: "custom" }, { name: "resizeImage:25", value: "25", icon: "small" }, { name: "resizeImage:50", value: "50", icon: "medium" }, { name: "resizeImage:75", value: "75", icon: "large" }, ], }); } init() { const t = this.editor; const e = new H$(t); this._registerConverters("imageBlock"); this._registerConverters("imageInline"); t.commands.add("resizeImage", e); t.commands.add("imageResize", e); } afterInit() { this._registerSchema(); } _registerSchema() { if (this.editor.plugins.has("ImageBlockEditing")) { this.editor.model.schema.extend("imageBlock", { allowAttributes: ["resizedWidth", "resizedHeight"], }); } if (this.editor.plugins.has("ImageInlineEditing")) { this.editor.model.schema.extend("imageInline", { allowAttributes: ["resizedWidth", "resizedHeight"], }); } } _registerConverters(t) { const e = this.editor; const n = e.plugins.get("ImageUtils"); e.conversion.for("downcast").add((e) => e.on(`attribute:resizedWidth:${t}`, (t, e, n) => { if (!n.consumable.consume(e.item, t.name)) { return; } const i = n.writer; const o = n.mapper.toViewElement(e.item); if (e.attributeNewValue !== null) { i.setStyle("width", e.attributeNewValue, o); i.addClass("image_resized", o); } else { i.removeStyle("width", o); i.removeClass("image_resized", o); } }) ); e.conversion .for("dataDowncast") .attributeToAttribute({ model: { name: t, key: "resizedHeight" }, view: (t) => ({ key: "style", value: { height: t } }), }); e.conversion.for("editingDowncast").add((e) => e.on(`attribute:resizedHeight:${t}`, (e, i, o) => { if (!o.consumable.consume(i.item, e.name)) { return; } const r = o.writer; const s = o.mapper.toViewElement(i.item); const a = t === "imageInline" ? n.findViewImgElement(s) : s; if (i.attributeNewValue !== null) { r.setStyle("height", i.attributeNewValue, a); } else { r.removeStyle("height", a); } }) ); e.conversion.for("upcast").attributeToAttribute({ view: { name: t === "imageBlock" ? "figure" : "img", styles: { width: /.+/ }, }, model: { key: "resizedWidth", value: (t) => { if (LH(t)) { return null; } return t.getStyle("width"); }, }, }); e.conversion.for("upcast").attributeToAttribute({ view: { name: t === "imageBlock" ? "figure" : "img", styles: { height: /.+/ }, }, model: { key: "resizedHeight", value: (t) => { if (LH(t)) { return null; } return t.getStyle("height"); }, }, }); } } const $$ = { small: Bv.objectSizeSmall, medium: Bv.objectSizeMedium, large: Bv.objectSizeLarge, custom: Bv.objectSizeCustom, original: Bv.objectSizeFull, }; class q$ extends au { static get requires() { return [U$]; } static get pluginName() { return "ImageResizeButtons"; } constructor(t) { super(t); this._resizeUnit = t.config.get("image.resizeUnit"); } init() { const t = this.editor; const e = t.config.get("image.resizeOptions"); const n = t.commands.get("resizeImage"); this.bind("isEnabled").to(n); for (const t of e) { this._registerImageResizeButton(t); } this._registerImageResizeDropdown(e); } _registerImageResizeButton(t) { const e = this.editor; const { name: n, value: i, icon: o } = t; e.ui.componentFactory.add(n, (n) => { const r = new iy(n); const s = e.commands.get("resizeImage"); const a = this._getOptionLabelValue(t, true); if (!$$[o]) { throw new N("imageresizebuttons-missing-icon", e, t); } r.set({ label: a, icon: $$[o], tooltip: a, isToggleable: true }); r.bind("isEnabled").to(this); if (e.plugins.has("ImageCustomResizeUI") && W$(t)) { const t = e.plugins.get("ImageCustomResizeUI"); this.listenTo(r, "execute", () => { t._showForm(this._resizeUnit); }); } else { const t = i ? i + this._resizeUnit : null; r.bind("isOn").to(s, "value", G$(t)); this.listenTo(r, "execute", () => { e.execute("resizeImage", { width: t }); }); } return r; }); } _registerImageResizeDropdown(t) { const e = this.editor; const n = e.t; const i = t.find((t) => !t.value); const o = (o) => { const r = e.commands.get("resizeImage"); const s = Zx(o, hx); const a = s.buttonView; const c = n("Resize image"); a.set({ tooltip: c, commandValue: i.value, icon: $$.medium, isToggleable: true, label: this._getOptionLabelValue(i), withText: true, class: "ck-resize-image-button", ariaLabel: c, ariaLabelledBy: undefined, }); a.bind("label").to(r, "value", (t) => { if (t && t.width) { return t.width; } else { return this._getOptionLabelValue(i); } }); s.bind("isEnabled").to(this); tE(s, () => this._getResizeDropdownListItemDefinitions(t, r), { ariaLabel: n("Image resize list"), role: "menu", }); this.listenTo(s, "execute", (t) => { if ("onClick" in t.source) { t.source.onClick(); } else { e.execute(t.source.commandName, { width: t.source.commandValue, }); e.editing.view.focus(); } }); return s; }; e.ui.componentFactory.add("resizeImage", o); e.ui.componentFactory.add("imageResize", o); } _getOptionLabelValue(t, e = false) { const n = this.editor.t; if (t.label) { return t.label; } else if (e) { if (W$(t)) { return n("Custom image size"); } else if (t.value) { return n("Resize image to %0", t.value + this._resizeUnit); } else { return n("Resize image to the original size"); } } else { if (W$(t)) { return n("Custom"); } else if (t.value) { return t.value + this._resizeUnit; } else { return n("Original"); } } } _getResizeDropdownListItemDefinitions(t, e) { const { editor: n } = this; const i = new nd(); const o = t.map((t) => { if (W$(t)) { return { ...t, valueWithUnits: "custom" }; } if (!t.value) { return { ...t, valueWithUnits: null }; } return { ...t, valueWithUnits: `${t.value}${this._resizeUnit}` }; }); for (const t of o) { let r = null; if (n.plugins.has("ImageCustomResizeUI") && W$(t)) { const i = n.plugins.get("ImageCustomResizeUI"); r = { type: "button", model: new uT({ label: this._getOptionLabelValue(t), role: "menuitemradio", withText: true, icon: null, onClick: () => { i._showForm(this._resizeUnit); }, }), }; const s = j$(o, "valueWithUnits"); r.model.bind("isOn").to(e, "value", K$(s)); } else { r = { type: "button", model: new uT({ commandName: "resizeImage", commandValue: t.valueWithUnits, label: this._getOptionLabelValue(t), role: "menuitemradio", withText: true, icon: null, }), }; r.model.bind("isOn").to(e, "value", G$(t.valueWithUnits)); } r.model.bind("isEnabled").to(e, "isEnabled"); i.add(r); } return i; } } function W$(t) { return t.value === "custom"; } function G$(t) { return (e) => { const n = e; if (t === null && n === t) { return true; } return n !== null && n.width === t; }; } function K$(t) { return (e) => !t.some((t) => G$(t)(e)); } const Y$ = "figure.image.ck-widget > img," + "figure.image.ck-widget > picture > img," + "figure.image.ck-widget > a > img," + "figure.image.ck-widget > a > picture > img," + "span.image-inline.ck-widget > img," + "span.image-inline.ck-widget > picture > img"; const Q$ = "image_resized"; class Z$ extends au { static get requires() { return [vP, zH]; } static get pluginName() { return "ImageResizeHandles"; } init() { const t = this.editor.commands.get("resizeImage"); this.bind("isEnabled").to(t); this._setupResizerCreator(); } _setupResizerCreator() { const t = this.editor; const e = t.editing.view; const n = t.plugins.get("ImageUtils"); e.addObserver(oU); this.listenTo(e.document, "imageLoaded", (i, o) => { if (!o.target.matches(Y$)) { return; } const r = t.editing.view.domConverter; const s = r.domToView(o.target); const a = n.getImageWidgetFromImageView(s); let c = this.editor.plugins.get(vP).getResizerByViewElement(a); if (c) { c.redraw(); return; } const l = t.editing.mapper; const d = l.toModelElement(a); c = t.plugins.get(vP).attachTo({ unit: t.config.get("image.resizeUnit"), modelElement: d, viewElement: a, editor: t, getHandleHost(t) { return t.querySelector("img"); }, getResizeHost() { return r.mapViewToDom(l.toViewElement(d)); }, isCentered() { const t = d.getAttribute("imageStyle"); return t == "alignCenter"; }, onCommit(n) { e.change((t) => { t.removeClass(Q$, a); }); t.execute("resizeImage", { width: n }); }, }); c.on("updateSize", () => { if (!a.hasClass(Q$)) { e.change((t) => { t.addClass(Q$, a); }); } const t = d.name === "imageInline" ? s : a; if (t.getStyle("height")) { e.change((e) => { e.removeStyle("height", t); }); } }); c.bind("isEnabled").to(this); }); } } function J$(t) { if (!t) { return null; } const [, e, n] = t.trim().match(/([.,\d]+)(%|px)$/) || []; const i = Number.parseFloat(e); if (Number.isNaN(i)) { return null; } return { value: i, unit: n }; } function X$(t, e, n) { if (n === "px") { return { value: e.value, unit: "px" }; } return { value: (e.value / t) * 100, unit: "%" }; } function tq(t) { const { editing: e } = t; const n = t.plugins.get("ImageUtils"); const i = n.getClosestSelectedImageElement(t.model.document.selection); if (!i) { return null; } const o = e.mapper.toViewElement(i); const r = e.view.domConverter.mapViewToDom(o); return { model: i, view: o, dom: r }; } function eq(t, e) { const n = tq(t); if (!n) { return null; } const i = J$(n.model.getAttribute("resizedWidth") || null); if (!i) { return null; } if (i.unit === e) { return i; } const o = vz(n.dom); const r = { unit: "px", value: new lc(n.dom).width }; return X$(o, r, e); } var nq = n(1096); var iq = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; iq.insert = "head"; iq.singleton = true; var oq = Zd()(nq.A, iq); const rq = nq.A.locals || {}; class sq extends nu { constructor(t, e, n) { super(t); const i = this.locale.t; this.focusTracker = new od(); this.keystrokes = new rd(); this.unit = e; this.labeledInput = this._createLabeledInputView(); this.saveButtonView = this._createButton( i("Save"), Bv.check, "ck-button-save" ); this.saveButtonView.type = "submit"; this.cancelButtonView = this._createButton( i("Cancel"), Bv.cancel, "ck-button-cancel", "cancel" ); this._focusables = new Ad(); this._validators = n; this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.setTemplate({ tag: "form", attributes: { class: [ "ck", "ck-image-custom-resize-form", "ck-responsive-form", ], tabindex: "-1", }, children: [ this.labeledInput, this.saveButtonView, this.cancelButtonView, ], }); } render() { super.render(); this.keystrokes.listenTo(this.element); ru({ view: this }); [ this.labeledInput, this.saveButtonView, this.cancelButtonView, ].forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); }); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } _createButton(t, e, n, i) { const o = new iy(this.locale); o.set({ label: t, icon: e, tooltip: true }); o.extendTemplate({ attributes: { class: n } }); if (i) { o.delegate("execute").to(this, i); } return o; } _createLabeledInputView() { const t = this.locale.t; const e = new Uy(this.locale, hE); e.label = t("Resize image (in %0)", this.unit); e.fieldView.set({ step: 0.1 }); return e; } isValid() { this.resetFormStatus(); for (const t of this._validators) { const e = t(this); if (e) { this.labeledInput.errorText = e; return false; } } return true; } resetFormStatus() { this.labeledInput.errorText = null; } get rawSize() { const { element: t } = this.labeledInput.fieldView; if (!t) { return null; } return t.value; } get parsedSize() { const { rawSize: t } = this; if (t === null) { return null; } const e = Number.parseFloat(t); if (Number.isNaN(e)) { return null; } return e; } get sizeWithUnits() { const { parsedSize: t, unit: e } = this; if (t === null) { return null; } return `${t}${e}`; } } function aq(t, e) { const n = tq(t); if (!n) { return null; } const i = vz(n.dom); const o = J$(window.getComputedStyle(n.dom).minWidth) || { value: 1, unit: "px", }; const r = Math.max(0.1, X$(i, o, e).value); const s = e === "px" ? i : 100; return { unit: e, lower: r, upper: s }; } class cq extends au { static get requires() { return [_T]; } static get pluginName() { return "ImageCustomResizeUI"; } destroy() { super.destroy(); if (this._form) { this._form.destroy(); } } _createForm(t) { const e = this.editor; this._balloon = this.editor.plugins.get("ContextualBalloon"); this._form = new (ou(sq))(e.locale, t, lq(e)); this._form.render(); this.listenTo(this._form, "submit", () => { if (this._form.isValid()) { e.execute("resizeImage", { width: this._form.sizeWithUnits }); this._hideForm(true); } }); this.listenTo(this._form.labeledInput, "change:errorText", () => { e.ui.update(); }); this.listenTo(this._form, "cancel", () => { this._hideForm(true); }); this._form.keystrokes.set("Esc", (t, e) => { this._hideForm(true); e(); }); iu({ emitter: this._form, activator: () => this._isVisible, contextElements: () => [this._balloon.view.element], callback: () => this._hideForm(), }); } _showForm(t) { if (this._isVisible) { return; } if (!this._form) { this._createForm(t); } const e = this.editor; const n = this._form.labeledInput; this._form.disableCssTransitions(); this._form.resetFormStatus(); if (!this._isInBalloon) { this._balloon.add({ view: this._form, position: QH(e) }); } const i = eq(e, t); const o = i ? i.value.toFixed(1) : ""; const r = aq(e, t); n.fieldView.value = n.fieldView.element.value = o; if (r) { Object.assign(n.fieldView, { min: r.lower.toFixed(1), max: Math.ceil(r.upper).toFixed(1), }); } this._form.labeledInput.fieldView.select(); this._form.enableCssTransitions(); } _hideForm(t = false) { if (!this._isInBalloon) { return; } if (this._form.focusTracker.isFocused) { this._form.saveButtonView.focus(); } this._balloon.remove(this._form); if (t) { this.editor.editing.view.focus(); } } get _isVisible() { return !!this._balloon && this._balloon.visibleView === this._form; } get _isInBalloon() { return !!this._balloon && this._balloon.hasView(this._form); } } function lq(t) { const e = t.t; return [ (t) => { if (t.rawSize.trim() === "") { return e("The value must not be empty."); } if (t.parsedSize === null) { return e("The value should be a plain number."); } }, ]; } var dq = n(5035); var uq = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; uq.insert = "head"; uq.singleton = true; var hq = Zd()(dq.A, uq); const mq = dq.A.locals || {}; class gq extends au { static get requires() { return [U$, Z$, cq, q$]; } static get pluginName() { return "ImageResize"; } } class fq extends lu { constructor(t, e) { super(t); this._defaultStyles = { imageBlock: false, imageInline: false }; this._styles = new Map( e.map((t) => { if (t.isDefault) { for (const e of t.modelElements) { this._defaultStyles[e] = t.name; } } return [t.name, t]; }) ); } refresh() { const t = this.editor; const e = t.plugins.get("ImageUtils"); const n = e.getClosestSelectedImageElement( this.editor.model.document.selection ); this.isEnabled = !!n; if (!this.isEnabled) { this.value = false; } else if (n.hasAttribute("imageStyle")) { this.value = n.getAttribute("imageStyle"); } else { this.value = this._defaultStyles[n.name]; } } execute(t = {}) { const e = this.editor; const n = e.model; const i = e.plugins.get("ImageUtils"); n.change((e) => { const o = t.value; const { setImageSizes: r = true } = t; let s = i.getClosestSelectedImageElement(n.document.selection); if (o && this.shouldConvertImageType(o, s)) { this.editor.execute( i.isBlockImage(s) ? "imageTypeInline" : "imageTypeBlock", { setImageSizes: r } ); s = i.getClosestSelectedImageElement(n.document.selection); } if (!o || this._styles.get(o).isDefault) { e.removeAttribute("imageStyle", s); } else { e.setAttribute("imageStyle", o, s); } if (r) { i.setImageNaturalSizeAttributes(s); } }); } shouldConvertImageType(t, e) { const n = this._styles.get(t).modelElements; return !n.includes(e.name); } } const { objectFullWidth: pq, objectInline: kq, objectLeft: bq, objectRight: wq, objectCenter: Aq, objectBlockLeft: _q, objectBlockRight: Cq, } = Bv; const vq = { get inline() { return { name: "inline", title: "In line", icon: kq, modelElements: ["imageInline"], isDefault: true, }; }, get alignLeft() { return { name: "alignLeft", title: "Left aligned image", icon: bq, modelElements: ["imageBlock", "imageInline"], className: "image-style-align-left", }; }, get alignBlockLeft() { return { name: "alignBlockLeft", title: "Left aligned image", icon: _q, modelElements: ["imageBlock"], className: "image-style-block-align-left", }; }, get alignCenter() { return { name: "alignCenter", title: "Centered image", icon: Aq, modelElements: ["imageBlock"], className: "image-style-align-center", }; }, get alignRight() { return { name: "alignRight", title: "Right aligned image", icon: wq, modelElements: ["imageBlock", "imageInline"], className: "image-style-align-right", }; }, get alignBlockRight() { return { name: "alignBlockRight", title: "Right aligned image", icon: Cq, modelElements: ["imageBlock"], className: "image-style-block-align-right", }; }, get block() { return { name: "block", title: "Centered image", icon: Aq, modelElements: ["imageBlock"], isDefault: true, }; }, get side() { return { name: "side", title: "Side image", icon: wq, modelElements: ["imageBlock"], className: "image-style-side", }; }, }; const yq = { full: pq, left: _q, right: Cq, center: Aq, inlineLeft: bq, inlineRight: wq, inline: kq, }; const xq = [ { name: "imageStyle:wrapText", title: "Wrap text", defaultItem: "imageStyle:alignLeft", items: ["imageStyle:alignLeft", "imageStyle:alignRight"], }, { name: "imageStyle:breakText", title: "Break text", defaultItem: "imageStyle:block", items: [ "imageStyle:alignBlockLeft", "imageStyle:block", "imageStyle:alignBlockRight", ], }, ]; function Eq(t) { const e = t.configuredStyles.options || []; const n = e.map((t) => Tq(t)).filter((e) => Bq(e, t)); return n; } function Dq(t, e) { if (t && e) { return { options: [ "inline", "alignLeft", "alignRight", "alignCenter", "alignBlockLeft", "alignBlockRight", "block", "side", ], }; } else if (t) { return { options: ["block", "side"] }; } else if (e) { return { options: ["inline", "alignLeft", "alignRight"] }; } return {}; } function Sq(t) { if (t.has("ImageBlockEditing") && t.has("ImageInlineEditing")) { return [...xq]; } else { return []; } } function Tq(t) { if (typeof t === "string") { if (!vq[t]) { t = { name: t }; } else { t = { ...vq[t] }; } } else { t = Mq(vq[t.name], t); } if (typeof t.icon === "string") { t.icon = yq[t.icon] || t.icon; } return t; } function Bq(t, { isBlockPluginLoaded: e, isInlinePluginLoaded: n }) { const { modelElements: i, name: o } = t; if (!i || !i.length || !o) { Iq({ style: t }); return false; } else { const o = [e ? "imageBlock" : null, n ? "imageInline" : null]; if (!i.some((t) => o.includes(t))) { z("image-style-missing-dependency", { style: t, missingPlugins: i.map((t) => t === "imageBlock" ? "ImageBlockEditing" : "ImageInlineEditing" ), }); return false; } } return true; } function Mq(t, e) { const n = { ...e }; for (const i in t) { if (!Object.prototype.hasOwnProperty.call(e, i)) { n[i] = t[i]; } } return n; } function Iq(t) { z("image-style-configuration-definition-invalid", t); } const Lq = { normalizeStyles: Eq, getDefaultStylesConfiguration: Dq, getDefaultDropdownDefinitions: Sq, warnInvalidStyle: Iq, DEFAULT_OPTIONS: vq, DEFAULT_ICONS: yq, DEFAULT_DROPDOWN_DEFINITIONS: xq, }; function Nq(t) { return (e, n, i) => { if (!i.consumable.consume(n.item, e.name)) { return; } const o = Pq(n.attributeNewValue, t); const r = Pq(n.attributeOldValue, t); const s = i.mapper.toViewElement(n.item); const a = i.writer; if (r) { a.removeClass(r.className, s); } if (o) { a.addClass(o.className, s); } }; } function zq(t) { const e = { imageInline: t.filter( (t) => !t.isDefault && t.modelElements.includes("imageInline") ), imageBlock: t.filter( (t) => !t.isDefault && t.modelElements.includes("imageBlock") ), }; return (t, n, i) => { if (!n.modelRange) { return; } const o = n.viewItem; const r = id(n.modelRange.getItems()); if (!r) { return; } if (!i.schema.checkAttribute(r, "imageStyle")) { return; } for (const t of e[r.name]) { if (i.consumable.consume(o, { classes: t.className })) { i.writer.setAttribute("imageStyle", t.name, r); } } }; } function Pq(t, e) { for (const n of e) { if (n.name === t) { return n; } } } class Rq extends au { static get pluginName() { return "ImageStyleEditing"; } static get requires() { return [zH]; } init() { const { normalizeStyles: t, getDefaultStylesConfiguration: e } = Lq; const n = this.editor; const i = n.plugins.has("ImageBlockEditing"); const o = n.plugins.has("ImageInlineEditing"); n.config.define("image.styles", e(i, o)); this.normalizedStyles = t({ configuredStyles: n.config.get("image.styles"), isBlockPluginLoaded: i, isInlinePluginLoaded: o, }); this._setupConversion(i, o); this._setupPostFixer(); n.commands.add("imageStyle", new fq(n, this.normalizedStyles)); } _setupConversion(t, e) { const n = this.editor; const i = n.model.schema; const o = Nq(this.normalizedStyles); const r = zq(this.normalizedStyles); n.editing.downcastDispatcher.on("attribute:imageStyle", o); n.data.downcastDispatcher.on("attribute:imageStyle", o); if (t) { i.extend("imageBlock", { allowAttributes: "imageStyle" }); n.data.upcastDispatcher.on("element:figure", r, { priority: "low", }); } if (e) { i.extend("imageInline", { allowAttributes: "imageStyle" }); n.data.upcastDispatcher.on("element:img", r, { priority: "low" }); } } _setupPostFixer() { const t = this.editor; const e = t.model.document; const n = t.plugins.get(zH); const i = new Map(this.normalizedStyles.map((t) => [t.name, t])); e.registerPostFixer((t) => { let o = false; for (const r of e.differ.getChanges()) { if ( r.type == "insert" || (r.type == "attribute" && r.attributeKey == "imageStyle") ) { let e = r.type == "insert" ? r.position.nodeAfter : r.range.start.nodeAfter; if (e && e.is("element", "paragraph") && e.childCount > 0) { e = e.getChild(0); } if (!n.isImage(e)) { continue; } const s = e.getAttribute("imageStyle"); if (!s) { continue; } const a = i.get(s); if (!a || !a.modelElements.includes(e.name)) { t.removeAttribute("imageStyle", e); o = true; } } } return o; }); } } var Vq = n(1644); var Oq = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; Oq.insert = "head"; Oq.singleton = true; var Fq = Zd()(Vq.A, Oq); const jq = Vq.A.locals || {}; class Hq extends au { static get requires() { return [Rq]; } static get pluginName() { return "ImageStyleUI"; } get localizedDefaultStylesTitles() { const t = this.editor.t; return { "Wrap text": t("Wrap text"), "Break text": t("Break text"), "In line": t("In line"), "Full size image": t("Full size image"), "Side image": t("Side image"), "Left aligned image": t("Left aligned image"), "Centered image": t("Centered image"), "Right aligned image": t("Right aligned image"), }; } init() { const t = this.editor.plugins; const e = this.editor.config.get("image.toolbar") || []; const n = t.get("ImageStyleEditing"); const i = Uq(n.normalizedStyles, this.localizedDefaultStylesTitles); for (const t of i) { this._createButton(t); } const o = Uq( [...e.filter(st), ...Lq.getDefaultDropdownDefinitions(t)], this.localizedDefaultStylesTitles ); for (const t of o) { this._createDropdown(t, i); } } _createDropdown(t, e) { const n = this.editor.ui.componentFactory; n.add(t.name, (i) => { let o; const { defaultItem: r, items: s, title: a } = t; const c = s .filter((t) => e.find(({ name: e }) => $q(e) === t)) .map((t) => { const e = n.create(t); if (t === r) { o = e; } return e; }); if (s.length !== c.length) { Lq.warnInvalidStyle({ dropdown: t }); } const l = Zx(i, Hx); const d = l.buttonView; const u = d.arrowView; Jx(l, c, { enableActiveItemFocusOnDropdownOpen: true }); d.set({ label: qq(a, o.label), class: null, tooltip: true }); u.unbind("label"); u.set({ label: a }); d.bind("icon").toMany(c, "isOn", (...t) => { const e = t.findIndex(vl); return e < 0 ? o.icon : c[e].icon; }); d.bind("label").toMany(c, "isOn", (...t) => { const e = t.findIndex(vl); return qq(a, e < 0 ? o.label : c[e].label); }); d.bind("isOn").toMany(c, "isOn", (...t) => t.some(vl)); d.bind("class").toMany(c, "isOn", (...t) => t.some(vl) ? "ck-splitbutton_flatten" : undefined ); d.on("execute", () => { if (!c.some(({ isOn: t }) => t)) { o.fire("execute"); } else { l.isOpen = !l.isOpen; } }); l.bind("isEnabled").toMany(c, "isEnabled", (...t) => t.some(vl)); this.listenTo(l, "execute", () => { this.editor.editing.view.focus(); }); return l; }); } _createButton(t) { const e = t.name; this.editor.ui.componentFactory.add($q(e), (n) => { const i = this.editor.commands.get("imageStyle"); const o = new iy(n); o.set({ label: t.title, icon: t.icon, tooltip: true, isToggleable: true, }); o.bind("isEnabled").to(i, "isEnabled"); o.bind("isOn").to(i, "value", (t) => t === e); o.on("execute", this._executeCommand.bind(this, e)); return o; }); } _executeCommand(t) { this.editor.execute("imageStyle", { value: t }); this.editor.editing.view.focus(); } } function Uq(t, e) { for (const n of t) { if (e[n.title]) { n.title = e[n.title]; } } return t; } function $q(t) { return `imageStyle:${t}`; } function qq(t, e) { return (t ? t + ": " : "") + e; } class Wq extends au { static get requires() { return [Rq, Hq]; } static get pluginName() { return "ImageStyle"; } } class Gq extends au { static get requires() { return [rP, zH]; } static get pluginName() { return "ImageToolbar"; } afterInit() { const t = this.editor; const e = t.t; const n = t.plugins.get(rP); const i = t.plugins.get("ImageUtils"); n.register("image", { ariaLabel: e("Image toolbar"), items: Kq(t.config.get("image.toolbar") || []), getRelatedElement: (t) => i.getClosestSelectedImageWidget(t), }); } } function Kq(t) { return t.map((t) => (st(t) ? t.name : t)); } class Yq extends (null && Plugin) { static get requires() { return [ImageEditing, ImageUtils]; } static get pluginName() { return "PictureEditing"; } afterInit() { const t = this.editor; if (t.plugins.has("ImageBlockEditing")) { t.model.schema.extend("imageBlock", { allowAttributes: ["sources"], }); } if (t.plugins.has("ImageInlineEditing")) { t.model.schema.extend("imageInline", { allowAttributes: ["sources"], }); } this._setupConversion(); this._setupImageUploadEditingIntegration(); } _setupConversion() { const t = this.editor; const e = t.conversion; const n = t.plugins.get("ImageUtils"); e.for("upcast").add(upcastPicture(n)); e.for("downcast").add(downcastSourcesAttribute(n)); } _setupImageUploadEditingIntegration() { const t = this.editor; if (!t.plugins.has("ImageUploadEditing")) { return; } const e = t.plugins.get("ImageUploadEditing"); this.listenTo( e, "uploadComplete", (e, { imageElement: n, data: i }) => { const o = i.sources; if (!o) { return; } t.model.change((t) => { t.setAttributes({ sources: o }, n); }); } ); } } class Qq extends au { static get pluginName() { return "IndentEditing"; } init() { const t = this.editor; t.commands.add("indent", new uu(t)); t.commands.add("outdent", new uu(t)); } } class Zq extends au { static get pluginName() { return "IndentUI"; } init() { const t = this.editor; const e = t.locale; const n = t.t; const i = e.uiLanguageDirection == "ltr" ? Bv.indent : Bv.outdent; const o = e.uiLanguageDirection == "ltr" ? Bv.outdent : Bv.indent; this._defineButton("indent", n("Increase indent"), i); this._defineButton("outdent", n("Decrease indent"), o); } _defineButton(t, e, n) { const i = this.editor; i.ui.componentFactory.add(t, () => { const i = this._createButton(iy, t, e, n); i.set({ tooltip: true }); return i; }); i.ui.componentFactory.add("menuBar:" + t, () => this._createButton(wM, t, e, n) ); } _createButton(t, e, n, i) { const o = this.editor; const r = o.commands.get(e); const s = new t(o.locale); s.set({ label: n, icon: i }); s.bind("isEnabled").to(r, "isEnabled"); this.listenTo(s, "execute", () => { o.execute(e); o.editing.view.focus(); }); return s; } } class Jq extends au { static get pluginName() { return "Indent"; } static get requires() { return [Qq, Zq]; } } class Xq extends lu { constructor(t, e) { super(t); this._indentBehavior = e; } refresh() { const t = this.editor; const e = t.model; const n = id(e.document.selection.getSelectedBlocks()); if (!n || !this._isIndentationChangeAllowed(n)) { this.isEnabled = false; return; } this.isEnabled = this._indentBehavior.checkEnabled( n.getAttribute("blockIndent") ); } execute() { const t = this.editor.model; const e = this._getBlocksToChange(); t.change((t) => { for (const n of e) { const e = n.getAttribute("blockIndent"); const i = this._indentBehavior.getNextIndent(e); if (i) { t.setAttribute("blockIndent", i, n); } else { t.removeAttribute("blockIndent", n); } } }); } _getBlocksToChange() { const t = this.editor.model; const e = t.document.selection; const n = Array.from(e.getSelectedBlocks()); return n.filter((t) => this._isIndentationChangeAllowed(t)); } _isIndentationChangeAllowed(t) { const e = this.editor; if (!e.model.schema.checkAttribute(t, "blockIndent")) { return false; } if (!e.plugins.has("ListUtils")) { return true; } if (!this._indentBehavior.isForward) { return true; } const n = e.plugins.get("ListUtils"); return !n.isListItemBlock(t); } } class tW { constructor(t) { this.isForward = t.direction === "forward"; this.offset = t.offset; this.unit = t.unit; } checkEnabled(t) { const e = parseFloat(t || "0"); return this.isForward || e > 0; } getNextIndent(t) { const e = parseFloat(t || "0"); const n = !t || t.endsWith(this.unit); if (!n) { return this.isForward ? this.offset + this.unit : undefined; } const i = this.isForward ? this.offset : -this.offset; const o = e + i; return o > 0 ? o + this.unit : undefined; } } class eW { constructor(t) { this.isForward = t.direction === "forward"; this.classes = t.classes; } checkEnabled(t) { const e = this.classes.indexOf(t); if (this.isForward) { return e < this.classes.length - 1; } else { return e >= 0; } } getNextIndent(t) { const e = this.classes.indexOf(t); const n = this.isForward ? 1 : -1; return this.classes[e + n]; } } const nW = [ "paragraph", "heading1", "heading2", "heading3", "heading4", "heading5", "heading6", ]; class iW extends au { constructor(t) { super(t); t.config.define("indentBlock", { offset: 40, unit: "px" }); } static get pluginName() { return "IndentBlock"; } init() { const t = this.editor; const e = t.config.get("indentBlock"); if (e.classes && e.classes.length) { this._setupConversionUsingClasses(e.classes); t.commands.add( "indentBlock", new Xq(t, new eW({ direction: "forward", classes: e.classes })) ); t.commands.add( "outdentBlock", new Xq(t, new eW({ direction: "backward", classes: e.classes })) ); } else { t.data.addStyleProcessorRules(N_); this._setupConversionUsingOffset(); t.commands.add( "indentBlock", new Xq( t, new tW({ direction: "forward", offset: e.offset, unit: e.unit }) ) ); t.commands.add( "outdentBlock", new Xq( t, new tW({ direction: "backward", offset: e.offset, unit: e.unit, }) ) ); } } afterInit() { const t = this.editor; const e = t.model.schema; const n = t.commands.get("indent"); const i = t.commands.get("outdent"); const o = t.config.get("heading.options"); const r = o && o.map((t) => t.model); const s = r || nW; s.forEach((t) => { if (e.isRegistered(t)) { e.extend(t, { allowAttributes: "blockIndent" }); } }); e.setAttributeProperties("blockIndent", { isFormatting: true }); n.registerChildCommand(t.commands.get("indentBlock")); i.registerChildCommand(t.commands.get("outdentBlock")); } _setupConversionUsingOffset() { const t = this.editor.conversion; const e = this.editor.locale; const n = e.contentLanguageDirection === "rtl" ? "margin-right" : "margin-left"; t.for("upcast").attributeToAttribute({ view: { styles: { [n]: /[\s\S]+/ } }, model: { key: "blockIndent", value: (t) => { if (!t.is("element", "li")) { return t.getStyle(n); } }, }, }); t.for("downcast").attributeToAttribute({ model: "blockIndent", view: (t) => ({ key: "style", value: { [n]: t } }), }); } _setupConversionUsingClasses(t) { const e = { model: { key: "blockIndent", values: [] }, view: {} }; for (const n of t) { e.model.values.push(n); e.view[n] = { key: "class", value: [n] }; } this.editor.conversion.attributeToAttribute(e); } } function oW(t, e) { e = e || ol(t); return `${t}:${e}`; } function rW(t) { const [e, n] = t.split(":"); return { languageCode: e, textDirection: n }; } class sW extends lu { refresh() { const t = this.editor.model; const e = t.document; this.value = this._getValueFromFirstAllowedNode(); this.isEnabled = t.schema.checkAttributeInSelection( e.selection, "language" ); } execute({ languageCode: t, textDirection: e } = {}) { const n = this.editor.model; const i = n.document; const o = i.selection; const r = t ? oW(t, e) : false; n.change((t) => { if (o.isCollapsed) { if (r) { t.setSelectionAttribute("language", r); } else { t.removeSelectionAttribute("language"); } } else { const e = n.schema.getValidRanges(o.getRanges(), "language"); for (const n of e) { if (r) { t.setAttribute("language", r, n); } else { t.removeAttribute("language", n); } } } }); } _getValueFromFirstAllowedNode() { const t = this.editor.model; const e = t.schema; const n = t.document.selection; if (n.isCollapsed) { return n.getAttribute("language") || false; } for (const t of n.getRanges()) { for (const n of t.getItems()) { if (e.checkAttribute(n, "language")) { return n.getAttribute("language") || false; } } } return false; } } class aW extends au { static get pluginName() { return "TextPartLanguageEditing"; } constructor(t) { super(t); t.config.define("language", { textPartLanguage: [ { title: "Arabic", languageCode: "ar" }, { title: "French", languageCode: "fr" }, { title: "Spanish", languageCode: "es" }, ], }); } init() { const t = this.editor; t.model.schema.extend("$text", { allowAttributes: "language" }); t.model.schema.setAttributeProperties("language", { copyOnEnter: true, }); this._defineConverters(); t.commands.add("textPartLanguage", new sW(t)); } _defineConverters() { const t = this.editor.conversion; t.for("upcast").elementToAttribute({ model: { key: "language", value: (t) => { const e = t.getAttribute("lang"); const n = t.getAttribute("dir"); return oW(e, n); }, }, view: { name: "span", attributes: { lang: /[\s\S]+/ } }, }); t.for("downcast").attributeToElement({ model: "language", view: (t, { writer: e }, n) => { if (!t) { return; } if (!n.item.is("$textProxy") && !n.item.is("documentSelection")) { return; } const { languageCode: i, textDirection: o } = rW(t); return e.createAttributeElement("span", { lang: i, dir: o }); }, }); } } class cW extends au { static get pluginName() { return "TextPartLanguageUI"; } init() { const t = this.editor; const e = t.t; const n = e("Choose language"); const i = e("Language"); t.ui.componentFactory.add("textPartLanguage", (e) => { const { definitions: o, titles: r } = this._getItemMetadata(); const s = t.commands.get("textPartLanguage"); const a = Zx(e); tE(a, o, { ariaLabel: i, role: "menu" }); a.buttonView.set({ ariaLabel: i, ariaLabelledBy: undefined, isOn: false, withText: true, tooltip: i, }); a.extendTemplate({ attributes: { class: ["ck-text-fragment-language-dropdown"] }, }); a.bind("isEnabled").to(s, "isEnabled"); a.buttonView.bind("label").to(s, "value", (t) => (t && r[t]) || n); a.buttonView.bind("ariaLabel").to(s, "value", (t) => { const e = t && r[t]; if (!e) { return i; } return `${e}, ${i}`; }); this.listenTo(a, "execute", (e) => { s.execute({ languageCode: e.source.languageCode, textDirection: e.source.textDirection, }); t.editing.view.focus(); }); return a; }); t.ui.componentFactory.add("menuBar:textPartLanguage", (n) => { const { definitions: o } = this._getItemMetadata(); const r = t.commands.get("textPartLanguage"); const s = new mM(n); s.buttonView.set({ label: i }); const a = new gM(n); a.set({ ariaLabel: e("Language"), role: "menu" }); for (const t of o) { if (t.type != "button") { a.items.add(new Mx(n)); continue; } const e = new NB(n, s); const i = new wM(n); i.bind(...Object.keys(t.model)).to(t.model); i.bind("ariaChecked").to(i, "isOn"); i.delegate("execute").to(s); e.children.add(i); a.items.add(e); } s.bind("isEnabled").to(r, "isEnabled"); s.panelView.children.add(a); s.on("execute", (e) => { r.execute({ languageCode: e.source.languageCode, textDirection: e.source.textDirection, }); t.editing.view.focus(); }); return s; }); } _getItemMetadata() { const t = this.editor; const e = new nd(); const n = {}; const i = t.commands.get("textPartLanguage"); const o = t.config.get("language.textPartLanguage"); const r = t.locale.t; const s = r("Remove language"); e.add({ type: "button", model: new uT({ label: s, languageCode: false, withText: true }), }); e.add({ type: "separator" }); for (const t of o) { const o = { type: "button", model: new uT({ label: t.title, languageCode: t.languageCode, role: "menuitemradio", textDirection: t.textDirection, withText: true, }), }; const r = oW(t.languageCode, t.textDirection); o.model.bind("isOn").to(i, "value", (t) => t === r); e.add(o); n[r] = t.title; } return { definitions: e, titles: n }; } } class lW extends au { static get requires() { return [aW, cW]; } static get pluginName() { return "TextPartLanguage"; } } class dW { constructor() { this._definitions = new Set(); } get length() { return this._definitions.size; } add(t) { if (Array.isArray(t)) { t.forEach((t) => this._definitions.add(t)); } else { this._definitions.add(t); } } getDispatcher() { return (t) => { t.on( "attribute:linkHref", (t, e, n) => { if (!n.consumable.test(e.item, "attribute:linkHref")) { return; } if (!(e.item.is("selection") || n.schema.isInline(e.item))) { return; } const i = n.writer; const o = i.document.selection; for (const t of this._definitions) { const r = i.createAttributeElement("a", t.attributes, { priority: 5, }); if (t.classes) { i.addClass(t.classes, r); } for (const e in t.styles) { i.setStyle(e, t.styles[e], r); } i.setCustomProperty("link", true, r); if (t.callback(e.attributeNewValue)) { if (e.item.is("selection")) { i.wrap(o.getFirstRange(), r); } else { i.wrap(n.mapper.toViewRange(e.range), r); } } else { i.unwrap(n.mapper.toViewRange(e.range), r); } } }, { priority: "high" } ); }; } getDispatcherForLinkedImage() { return (t) => { t.on( "attribute:linkHref:imageBlock", (t, e, { writer: n, mapper: i }) => { const o = i.toViewElement(e.item); const r = Array.from(o.getChildren()).find((t) => t.is("element", "a") ); for (const t of this._definitions) { const i = ad(t.attributes); if (t.callback(e.attributeNewValue)) { for (const [t, e] of i) { if (t === "class") { n.addClass(e, r); } else { n.setAttribute(t, e, r); } } if (t.classes) { n.addClass(t.classes, r); } for (const e in t.styles) { n.setStyle(e, t.styles[e], r); } } else { for (const [t, e] of i) { if (t === "class") { n.removeClass(e, r); } else { n.removeAttribute(t, r); } } if (t.classes) { n.removeClass(t.classes, r); } for (const e in t.styles) { n.removeStyle(e, r); } } } } ); }; } } const uW = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g; const hW = "^(?:(?:):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))"; const mW = /^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i; const gW = /^((\w+:(\/{2,})?)|(\W))/i; const fW = ["https?", "ftps?", "mailto"]; const pW = "Ctrl+K"; function kW(t) { return t.is("attributeElement") && !!t.getCustomProperty("link"); } function bW(t, { writer: e }) { const n = e.createAttributeElement("a", { href: t }, { priority: 5 }); e.setCustomProperty("link", true, n); return n; } function wW(t, e = fW) { const n = String(t); const i = e.join("|"); const o = new RegExp(`${hW.replace("", i)}`, "i"); return AW(n, o) ? n : "#"; } function AW(t, e) { const n = t.replace(uW, ""); return !!n.match(e); } function _W(t, e) { const n = { "Open in a new tab": t("Open in a new tab"), Downloadable: t("Downloadable"), }; e.forEach((t) => { if ("label" in t && n[t.label]) { t.label = n[t.label]; } return t; }); return e; } function CW(t) { const e = []; if (t) { for (const [n, i] of Object.entries(t)) { const t = Object.assign({}, i, { id: `link${fj(n)}` }); e.push(t); } } return e; } function vW(t, e) { if (!t) { return false; } return e.checkAttribute(t.name, "linkHref"); } function yW(t) { return mW.test(t); } function xW(t, e) { const n = yW(t) ? "mailto:" : e; const i = !!n && !EW(t); return t && i ? n + t : t; } function EW(t) { return gW.test(t); } function DW(t) { window.open(t, "_blank", "noopener"); } class SW extends lu { constructor() { super(...arguments); this.manualDecorators = new nd(); this.automaticDecorators = new dW(); } restoreManualDecoratorStates() { for (const t of this.manualDecorators) { t.value = this._getDecoratorStateFromModel(t.id); } } refresh() { const t = this.editor.model; const e = t.document.selection; const n = e.getSelectedElement() || id(e.getSelectedBlocks()); if (vW(n, t.schema)) { this.value = n.getAttribute("linkHref"); this.isEnabled = t.schema.checkAttribute(n, "linkHref"); } else { this.value = e.getAttribute("linkHref"); this.isEnabled = t.schema.checkAttributeInSelection(e, "linkHref"); } for (const t of this.manualDecorators) { t.value = this._getDecoratorStateFromModel(t.id); } } execute(t, e = {}) { const n = this.editor.model; const i = n.document.selection; const o = []; const r = []; for (const t in e) { if (e[t]) { o.push(t); } else { r.push(t); } } n.change((e) => { if (i.isCollapsed) { const s = i.getFirstPosition(); if (i.hasAttribute("linkHref")) { const a = TW(i); let c = nL(s, "linkHref", i.getAttribute("linkHref"), n); if (i.getAttribute("linkHref") === a) { c = this._updateLinkContent(n, e, c, t); } e.setAttribute("linkHref", t, c); o.forEach((t) => { e.setAttribute(t, true, c); }); r.forEach((t) => { e.removeAttribute(t, c); }); e.setSelection(e.createPositionAfter(c.end.nodeBefore)); } else if (t !== "") { const r = ad(i.getAttributes()); r.set("linkHref", t); o.forEach((t) => { r.set(t, true); }); const { end: a } = n.insertContent(e.createText(t, r), s); e.setSelection(a); } ["linkHref", ...o, ...r].forEach((t) => { e.removeSelectionAttribute(t); }); } else { const s = n.schema.getValidRanges(i.getRanges(), "linkHref"); const a = []; for (const t of i.getSelectedBlocks()) { if (n.schema.checkAttribute(t, "linkHref")) { a.push(e.createRangeOn(t)); } } const c = a.slice(); for (const t of s) { if (this._isRangeToUpdate(t, a)) { c.push(t); } } for (const s of c) { let a = s; if (c.length === 1) { const o = TW(i); if (i.getAttribute("linkHref") === o) { a = this._updateLinkContent(n, e, s, t); e.setSelection(e.createSelection(a)); } } e.setAttribute("linkHref", t, a); o.forEach((t) => { e.setAttribute(t, true, a); }); r.forEach((t) => { e.removeAttribute(t, a); }); } } }); } _getDecoratorStateFromModel(t) { const e = this.editor.model; const n = e.document.selection; const i = n.getSelectedElement(); if (vW(i, e.schema)) { return i.getAttribute(t); } return n.getAttribute(t); } _isRangeToUpdate(t, e) { for (const n of e) { if (n.containsRange(t)) { return false; } } return true; } _updateLinkContent(t, e, n, i) { const o = e.createText(i, { linkHref: i }); return t.insertContent(o, n); } } function TW(t) { if (t.isCollapsed) { const e = t.getFirstPosition(); return e.textNode && e.textNode.data; } else { const e = Array.from(t.getFirstRange().getItems()); if (e.length > 1) { return null; } const n = e[0]; if (n.is("$text") || n.is("$textProxy")) { return n.data; } return null; } } class BW extends lu { refresh() { const t = this.editor.model; const e = t.document.selection; const n = e.getSelectedElement(); if (vW(n, t.schema)) { this.isEnabled = t.schema.checkAttribute(n, "linkHref"); } else { this.isEnabled = t.schema.checkAttributeInSelection(e, "linkHref"); } } execute() { const t = this.editor; const e = this.editor.model; const n = e.document.selection; const i = t.commands.get("link"); e.change((t) => { const o = n.isCollapsed ? [ nL( n.getFirstPosition(), "linkHref", n.getAttribute("linkHref"), e ), ] : e.schema.getValidRanges(n.getRanges(), "linkHref"); for (const e of o) { t.removeAttribute("linkHref", e); if (i) { for (const n of i.manualDecorators) { t.removeAttribute(n.id, e); } } } }); } } class MW extends mt() { constructor({ id: t, label: e, attributes: n, classes: i, styles: o, defaultValue: r, }) { super(); this.id = t; this.set("value", undefined); this.defaultValue = r; this.label = e; this.attributes = n; this.classes = i; this.styles = o; } _createPattern() { return { attributes: this.attributes, classes: this.classes, styles: this.styles, }; } } var IW = n(7865); var LW = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; LW.insert = "head"; LW.singleton = true; var NW = Zd()(IW.A, LW); const zW = IW.A.locals || {}; const PW = "ck-link_selected"; const RW = "automatic"; const VW = "manual"; const OW = /^(https?:)?\/\//; class FW extends au { static get pluginName() { return "LinkEditing"; } static get requires() { return [OI, CI, iz]; } constructor(t) { super(t); t.config.define("link", { allowCreatingEmptyLinks: false, addTargetToExternalLinks: false, }); } init() { const t = this.editor; const e = this.editor.config.get("link.allowedProtocols"); t.model.schema.extend("$text", { allowAttributes: "linkHref" }); t.conversion .for("dataDowncast") .attributeToElement({ model: "linkHref", view: bW }); t.conversion .for("editingDowncast") .attributeToElement({ model: "linkHref", view: (t, n) => bW(wW(t, e), n), }); t.conversion .for("upcast") .elementToAttribute({ view: { name: "a", attributes: { href: true } }, model: { key: "linkHref", value: (t) => t.getAttribute("href") }, }); t.commands.add("link", new SW(t)); t.commands.add("unlink", new BW(t)); const n = _W(t.t, CW(t.config.get("link.decorators"))); this._enableAutomaticDecorators(n.filter((t) => t.mode === RW)); this._enableManualDecorators(n.filter((t) => t.mode === VW)); const i = t.plugins.get(OI); i.registerAttribute("linkHref"); oL(t, "linkHref", "a", PW); this._enableLinkOpen(); this._enableSelectionAttributesFixer(); this._enableClipboardIntegration(); } _enableAutomaticDecorators(t) { const e = this.editor; const n = e.commands.get("link"); const i = n.automaticDecorators; if (e.config.get("link.addTargetToExternalLinks")) { i.add({ id: "linkIsExternal", mode: RW, callback: (t) => !!t && OW.test(t), attributes: { target: "_blank", rel: "noopener noreferrer" }, }); } i.add(t); if (i.length) { e.conversion.for("downcast").add(i.getDispatcher()); } } _enableManualDecorators(t) { if (!t.length) { return; } const e = this.editor; const n = e.commands.get("link"); const i = n.manualDecorators; t.forEach((t) => { e.model.schema.extend("$text", { allowAttributes: t.id }); const n = new MW(t); i.add(n); e.conversion.for("downcast").attributeToElement({ model: n.id, view: (t, { writer: e, schema: i }, { item: o }) => { if (!(o.is("selection") || i.isInline(o))) { return; } if (t) { const t = e.createAttributeElement("a", n.attributes, { priority: 5, }); if (n.classes) { e.addClass(n.classes, t); } for (const i in n.styles) { e.setStyle(i, n.styles[i], t); } e.setCustomProperty("link", true, t); return t; } }, }); e.conversion .for("upcast") .elementToAttribute({ view: { name: "a", ...n._createPattern() }, model: { key: n.id }, }); }); } _enableLinkOpen() { const t = this.editor; const e = t.editing.view; const n = e.document; this.listenTo( n, "click", (t, e) => { const n = a.isMac ? e.domEvent.metaKey : e.domEvent.ctrlKey; if (!n) { return; } let i = e.domTarget; if (i.tagName.toLowerCase() != "a") { i = i.closest("a"); } if (!i) { return; } const o = i.getAttribute("href"); if (!o) { return; } t.stop(); e.preventDefault(); DW(o); }, { context: "$capture" } ); this.listenTo(n, "keydown", (e, n) => { const i = t.commands.get("link"); const o = i.value; const r = !!o && n.keyCode === Wc.enter && n.altKey; if (!r) { return; } e.stop(); DW(o); }); } _enableSelectionAttributesFixer() { const t = this.editor; const e = t.model; const n = e.document.selection; this.listenTo(n, "change:attribute", (t, { attributeKeys: i }) => { if (!i.includes("linkHref") || n.hasAttribute("linkHref")) { return; } e.change((t) => { jW(t, HW(e.schema)); }); }); } _enableClipboardIntegration() { const t = this.editor; const e = t.model; const n = this.editor.config.get("link.defaultProtocol"); if (!n) { return; } this.listenTo( t.plugins.get("ClipboardPipeline"), "contentInsertion", (t, i) => { e.change((t) => { const e = t.createRangeIn(i.content); for (const i of e.getItems()) { if (i.hasAttribute("linkHref")) { const e = xW(i.getAttribute("linkHref"), n); t.setAttribute("linkHref", e, i); } } }); } ); } } function jW(t, e) { t.removeSelectionAttribute("linkHref"); for (const n of e) { t.removeSelectionAttribute(n); } } function HW(t) { const e = t.getDefinition("$text").allowAttributes; return e.filter((t) => t.startsWith("link")); } var UW = n(2375); var $W = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; $W.insert = "head"; $W.singleton = true; var qW = Zd()(UW.A, $W); const WW = UW.A.locals || {}; class GW extends nu { constructor(t, e, n) { super(t); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusables = new Ad(); const i = t.t; this._validators = n; this.urlInputView = this._createUrlInput(); this.saveButtonView = this._createButton( i("Save"), Bv.check, "ck-button-save" ); this.saveButtonView.type = "submit"; this.cancelButtonView = this._createButton( i("Cancel"), Bv.cancel, "ck-button-cancel", "cancel" ); this._manualDecoratorSwitches = this._createManualDecoratorSwitches(e); this.children = this._createFormChildren(e.manualDecorators); this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); const o = ["ck", "ck-link-form", "ck-responsive-form"]; if (e.manualDecorators.length) { o.push("ck-link-form_layout-vertical", "ck-vertical-form"); } this.setTemplate({ tag: "form", attributes: { class: o, tabindex: "-1" }, children: this.children, }); } getDecoratorSwitchesState() { return Array.from(this._manualDecoratorSwitches).reduce((t, e) => { t[e.name] = e.isOn; return t; }, {}); } render() { super.render(); ru({ view: this }); const t = [ this.urlInputView, ...this._manualDecoratorSwitches, this.saveButtonView, this.cancelButtonView, ]; t.forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); }); this.keystrokes.listenTo(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this._focusCycler.focusFirst(); } isValid() { this.resetFormStatus(); for (const t of this._validators) { const e = t(this); if (e) { this.urlInputView.errorText = e; return false; } } return true; } resetFormStatus() { this.urlInputView.errorText = null; } _createUrlInput() { const t = this.locale.t; const e = new Uy(this.locale, uE); e.label = t("Link URL"); return e; } _createButton(t, e, n, i) { const o = new iy(this.locale); o.set({ label: t, icon: e, tooltip: true }); o.extendTemplate({ attributes: { class: n } }); if (i) { o.delegate("execute").to(this, i); } return o; } _createManualDecoratorSwitches(t) { const e = this.createCollection(); for (const n of t.manualDecorators) { const i = new cy(this.locale); i.set({ name: n.id, label: n.label, withText: true }); i.bind("isOn").toMany([n, t], "value", (t, e) => e === undefined && t === undefined ? !!n.defaultValue : !!t ); i.on("execute", () => { n.set("value", !i.isOn); }); e.add(i); } return e; } _createFormChildren(t) { const e = this.createCollection(); e.add(this.urlInputView); if (t.length) { const t = new nu(); t.setTemplate({ tag: "ul", children: this._manualDecoratorSwitches.map((t) => ({ tag: "li", children: [t], attributes: { class: ["ck", "ck-list__item"] }, })), attributes: { class: ["ck", "ck-reset", "ck-list"] }, }); e.add(t); } e.add(this.saveButtonView); e.add(this.cancelButtonView); return e; } get url() { const { element: t } = this.urlInputView.fieldView; if (!t) { return null; } return t.value.trim(); } } var KW = n(6144); var YW = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; YW.insert = "head"; YW.singleton = true; var QW = Zd()(KW.A, YW); const ZW = KW.A.locals || {}; const JW = ''; class XW extends nu { constructor(t, e = {}) { super(t); this.focusTracker = new od(); this.keystrokes = new rd(); this._focusables = new Ad(); const n = t.t; this.previewButtonView = this._createPreviewButton(); this.unlinkButtonView = this._createButton(n("Unlink"), JW, "unlink"); this.editButtonView = this._createButton( n("Edit link"), Bv.pencil, "edit" ); this.set("href", undefined); this._linkConfig = e; this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this.setTemplate({ tag: "div", attributes: { class: ["ck", "ck-link-actions", "ck-responsive-form"], tabindex: "-1", }, children: [ this.previewButtonView, this.editButtonView, this.unlinkButtonView, ], }); } render() { super.render(); const t = [ this.previewButtonView, this.editButtonView, this.unlinkButtonView, ]; t.forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); }); this.keystrokes.listenTo(this.element); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this._focusCycler.focusFirst(); } _createButton(t, e, n) { const i = new iy(this.locale); i.set({ label: t, icon: e, tooltip: true }); i.delegate("execute").to(this, n); return i; } _createPreviewButton() { const t = new iy(this.locale); const e = this.bindTemplate; const n = this.t; t.set({ withText: true, tooltip: n("Open link in new tab") }); t.extendTemplate({ attributes: { class: ["ck", "ck-link-actions__preview"], href: e.to( "href", (t) => t && wW(t, this._linkConfig.allowedProtocols) ), target: "_blank", rel: "noopener noreferrer", }, }); t.bind("label").to( this, "href", (t) => t || n("This link has no URL") ); t.bind("isEnabled").to(this, "href", (t) => !!t); t.template.tag = "a"; t.template.eventListeners = {}; return t; } } const tG = ''; const eG = "link-ui"; class nG extends au { constructor() { super(...arguments); this.actionsView = null; this.formView = null; } static get requires() { return [_T]; } static get pluginName() { return "LinkUI"; } init() { const t = this.editor; const e = this.editor.t; t.editing.view.addObserver(HA); this._balloon = t.plugins.get(_T); this._createToolbarLinkButton(); this._enableBalloonActivators(); t.conversion .for("editingDowncast") .markerToHighlight({ model: eG, view: { classes: ["ck-fake-link-selection"] }, }); t.conversion .for("editingDowncast") .markerToElement({ model: eG, view: { name: "span", classes: [ "ck-fake-link-selection", "ck-fake-link-selection_collapsed", ], }, }); t.accessibility.addKeystrokeInfos({ keystrokes: [ { label: e("Create link"), keystroke: pW }, { label: e("Move out of a link"), keystroke: [ ["arrowleft", "arrowleft"], ["arrowright", "arrowright"], ], }, ], }); } destroy() { super.destroy(); if (this.formView) { this.formView.destroy(); } if (this.actionsView) { this.actionsView.destroy(); } } _createViews() { this.actionsView = this._createActionsView(); this.formView = this._createFormView(); this._enableUserBalloonInteractions(); } _createActionsView() { const t = this.editor; const e = new XW(t.locale, t.config.get("link")); const n = t.commands.get("link"); const i = t.commands.get("unlink"); e.bind("href").to(n, "value"); e.editButtonView.bind("isEnabled").to(n); e.unlinkButtonView.bind("isEnabled").to(i); this.listenTo(e, "edit", () => { this._addFormView(); }); this.listenTo(e, "unlink", () => { t.execute("unlink"); this._hideUI(); }); e.keystrokes.set("Esc", (t, e) => { this._hideUI(); e(); }); e.keystrokes.set(pW, (t, e) => { this._addFormView(); e(); }); return e; } _createFormView() { const t = this.editor; const e = t.commands.get("link"); const n = t.config.get("link.defaultProtocol"); const i = new (ou(GW))(t.locale, e, oG(t)); i.urlInputView.fieldView.bind("value").to(e, "value"); i.urlInputView.bind("isEnabled").to(e, "isEnabled"); i.saveButtonView.bind("isEnabled").to(e, "isEnabled"); this.listenTo(i, "submit", () => { if (i.isValid()) { const { value: e } = i.urlInputView.fieldView.element; const o = xW(e, n); t.execute("link", o, i.getDecoratorSwitchesState()); this._closeFormView(); } }); this.listenTo(i.urlInputView, "change:errorText", () => { t.ui.update(); }); this.listenTo(i, "cancel", () => { this._closeFormView(); }); i.keystrokes.set("Esc", (t, e) => { this._closeFormView(); e(); }); return i; } _createToolbarLinkButton() { const t = this.editor; const e = t.commands.get("link"); t.ui.componentFactory.add("link", () => { const t = this._createButton(iy); t.set({ tooltip: true, isToggleable: true }); t.bind("isOn").to(e, "value", (t) => !!t); return t; }); t.ui.componentFactory.add("menuBar:link", () => this._createButton(wM) ); } _createButton(t) { const e = this.editor; const n = e.locale; const i = e.commands.get("link"); const o = new t(e.locale); const r = n.t; o.set({ label: r("Link"), icon: tG, keystroke: pW }); o.bind("isEnabled").to(i, "isEnabled"); this.listenTo(o, "execute", () => this._showUI(true)); return o; } _enableBalloonActivators() { const t = this.editor; const e = t.editing.view.document; this.listenTo(e, "click", () => { const t = this._getSelectedLinkElement(); if (t) { this._showUI(); } }); t.keystrokes.set(pW, (e, n) => { n(); if (t.commands.get("link").isEnabled) { this._showUI(true); } }); } _enableUserBalloonInteractions() { this.editor.keystrokes.set( "Tab", (t, e) => { if ( this._areActionsVisible && !this.actionsView.focusTracker.isFocused ) { this.actionsView.focus(); e(); } }, { priority: "high" } ); this.editor.keystrokes.set("Esc", (t, e) => { if (this._isUIVisible) { this._hideUI(); e(); } }); iu({ emitter: this.formView, activator: () => this._isUIInPanel, contextElements: () => [this._balloon.view.element], callback: () => this._hideUI(), }); } _addActionsView() { if (!this.actionsView) { this._createViews(); } if (this._areActionsInPanel) { return; } this._balloon.add({ view: this.actionsView, position: this._getBalloonPositionData(), }); } _addFormView() { if (!this.formView) { this._createViews(); } if (this._isFormInPanel) { return; } const t = this.editor; const e = t.commands.get("link"); this.formView.disableCssTransitions(); this.formView.resetFormStatus(); this._balloon.add({ view: this.formView, position: this._getBalloonPositionData(), }); this.formView.urlInputView.fieldView.value = e.value || ""; if (this._balloon.visibleView === this.formView) { this.formView.urlInputView.fieldView.select(); } this.formView.enableCssTransitions(); } _closeFormView() { const t = this.editor.commands.get("link"); t.restoreManualDecoratorStates(); if (t.value !== undefined) { this._removeFormView(); } else { this._hideUI(); } } _removeFormView() { if (this._isFormInPanel) { this.formView.saveButtonView.focus(); this.formView.urlInputView.fieldView.reset(); this._balloon.remove(this.formView); this.editor.editing.view.focus(); this._hideFakeVisualSelection(); } } _showUI(t = false) { if (!this.formView) { this._createViews(); } if (!this._getSelectedLinkElement()) { this._showFakeVisualSelection(); this._addActionsView(); if (t) { this._balloon.showStack("main"); } this._addFormView(); } else { if (this._areActionsVisible) { this._addFormView(); } else { this._addActionsView(); } if (t) { this._balloon.showStack("main"); } } this._startUpdatingUI(); } _hideUI() { if (!this._isUIInPanel) { return; } const t = this.editor; this.stopListening(t.ui, "update"); this.stopListening(this._balloon, "change:visibleView"); t.editing.view.focus(); this._removeFormView(); this._balloon.remove(this.actionsView); this._hideFakeVisualSelection(); } _startUpdatingUI() { const t = this.editor; const e = t.editing.view.document; let n = this._getSelectedLinkElement(); let i = r(); const o = () => { const t = this._getSelectedLinkElement(); const e = r(); if ((n && !t) || (!n && e !== i)) { this._hideUI(); } else if (this._isUIVisible) { this._balloon.updatePosition(this._getBalloonPositionData()); } n = t; i = e; }; function r() { return e.selection.focus .getAncestors() .reverse() .find((t) => t.is("element")); } this.listenTo(t.ui, "update", o); this.listenTo(this._balloon, "change:visibleView", o); } get _isFormInPanel() { return !!this.formView && this._balloon.hasView(this.formView); } get _areActionsInPanel() { return !!this.actionsView && this._balloon.hasView(this.actionsView); } get _areActionsVisible() { return ( !!this.actionsView && this._balloon.visibleView === this.actionsView ); } get _isUIInPanel() { return this._isFormInPanel || this._areActionsInPanel; } get _isUIVisible() { const t = this._balloon.visibleView; return ( (!!this.formView && t == this.formView) || this._areActionsVisible ); } _getBalloonPositionData() { const t = this.editor.editing.view; const e = this.editor.model; const n = t.document; let i; if (e.markers.has(eG)) { const e = Array.from( this.editor.editing.mapper.markerNameToElements(eG) ); const n = t.createRange( t.createPositionBefore(e[0]), t.createPositionAfter(e[e.length - 1]) ); i = t.domConverter.viewRangeToDom(n); } else { i = () => { const e = this._getSelectedLinkElement(); return e ? t.domConverter.mapViewToDom(e) : t.domConverter.viewRangeToDom(n.selection.getFirstRange()); }; } return { target: i }; } _getSelectedLinkElement() { const t = this.editor.editing.view; const e = t.document.selection; const n = e.getSelectedElement(); if (e.isCollapsed || (n && uz(n))) { return iG(e.getFirstPosition()); } else { const n = e.getFirstRange().getTrimmed(); const i = iG(n.start); const o = iG(n.end); if (!i || i != o) { return null; } if (t.createRangeIn(i).getTrimmed().isEqual(n)) { return i; } else { return null; } } } _showFakeVisualSelection() { const t = this.editor.model; t.change((e) => { const n = t.document.selection.getFirstRange(); if (t.markers.has(eG)) { e.updateMarker(eG, { range: n }); } else { if (n.start.isAtEnd) { const i = n.start.getLastMatchingPosition( ({ item: e }) => !t.schema.isContent(e), { boundaries: n } ); e.addMarker(eG, { usingOperation: false, affectsData: false, range: e.createRange(i, n.end), }); } else { e.addMarker(eG, { usingOperation: false, affectsData: false, range: n, }); } } }); } _hideFakeVisualSelection() { const t = this.editor.model; if (t.markers.has(eG)) { t.change((t) => { t.removeMarker(eG); }); } } } function iG(t) { return t.getAncestors().find((t) => kW(t)) || null; } function oG(t) { const e = t.t; const n = t.config.get("link.allowCreatingEmptyLinks"); return [ (t) => { if (!n && !t.url.length) { return e("Link URL must not be empty."); } }, ]; } const rG = 4; const sG = new RegExp( "(^|\\s)" + "(" + "(" + "(?:(?:(?:https?|ftp):)?\\/\\/)" + "(?:\\S+(?::\\S*)?@)?" + "(?:" + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + "|" + "(" + "((?!www\\.)|(www\\.))" + "(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+" + "(?:[a-z\\u00a1-\\uffff]{2,63})" + ")" + ")" + "(?::\\d{2,5})?" + "(?:[/?#]\\S*)?" + ")" + "|" + "(" + "(www.|(\\S+@))" + "((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+" + "(?:[a-z\\u00a1-\\uffff]{2,63})" + ")" + ")$", "i" ); const aG = 2; class cG extends au { static get requires() { return [zI, FW]; } static get pluginName() { return "AutoLink"; } init() { const t = this.editor; const e = t.model.document.selection; e.on("change:range", () => { this.isEnabled = !e.anchor.parent.is("element", "codeBlock"); }); this._enableTypingHandling(); } afterInit() { this._enableEnterHandling(); this._enableShiftEnterHandling(); this._enablePasteLinking(); } _expandLinkRange(t, e) { if (e.textNode && e.textNode.hasAttribute("linkHref")) { return nL(e, "linkHref", e.textNode.getAttribute("linkHref"), t); } else { return null; } } _selectEntireLinks(t, e) { const n = this.editor; const i = n.model; const o = i.document.selection; const r = o.getFirstPosition(); const s = o.getLastPosition(); let a = e.getJoined(this._expandLinkRange(i, r) || e); if (a) { a = a.getJoined(this._expandLinkRange(i, s) || e); } if (a && (a.start.isBefore(r) || a.end.isAfter(s))) { t.setSelection(a); } } _enablePasteLinking() { const t = this.editor; const e = t.model; const n = e.document.selection; const i = t.plugins.get("ClipboardPipeline"); const o = t.commands.get("link"); i.on( "inputTransformation", (t, i) => { if ( !this.isEnabled || !o.isEnabled || n.isCollapsed || i.method !== "paste" ) { return; } if (n.rangeCount > 1) { return; } const r = n.getFirstRange(); const s = i.dataTransfer.getData("text/plain"); if (!s) { return; } const a = s.match(sG); if (a && a[2] === s) { e.change((t) => { this._selectEntireLinks(t, r); o.execute(s); }); t.stop(); } }, { priority: "high" } ); } _enableTypingHandling() { const t = this.editor; const e = new VI(t.model, (t) => { if (!lG(t)) { return; } const e = dG(t.substr(0, t.length - 1)); if (e) { return { url: e }; } }); e.on("matched:data", (e, n) => { const { batch: i, range: o, url: r } = n; if (!i.isTyping) { return; } const s = o.end.getShiftedBy(-1); const a = s.getShiftedBy(-r.length); const c = t.model.createRange(a, s); this._applyAutoLink(r, c); }); e.bind("isEnabled").to(this); } _enableEnterHandling() { const t = this.editor; const e = t.model; const n = t.commands.get("enter"); if (!n) { return; } n.on("execute", () => { const t = e.document.selection.getFirstPosition(); if (!t.parent.previousSibling) { return; } const n = e.createRangeIn(t.parent.previousSibling); this._checkAndApplyAutoLinkOnRange(n); }); } _enableShiftEnterHandling() { const t = this.editor; const e = t.model; const n = t.commands.get("shiftEnter"); if (!n) { return; } n.on("execute", () => { const t = e.document.selection.getFirstPosition(); const n = e.createRange( e.createPositionAt(t.parent, 0), t.getShiftedBy(-1) ); this._checkAndApplyAutoLinkOnRange(n); }); } _checkAndApplyAutoLinkOnRange(t) { const e = this.editor.model; const { text: n, range: i } = RI(t, e); const o = dG(n); if (o) { const t = e.createRange(i.end.getShiftedBy(-o.length), i.end); this._applyAutoLink(o, t); } } _applyAutoLink(t, e) { const n = this.editor.model; const i = this.editor.config.get("link.defaultProtocol"); const o = xW(t, i); if (!this.isEnabled || !uG(e, n) || !EW(o) || hG(e)) { return; } this._persistAutoLink(o, e); } _persistAutoLink(t, e) { const n = this.editor.model; const i = this.editor.plugins.get("Delete"); n.enqueueChange((o) => { o.setAttribute("linkHref", t, e); n.enqueueChange(() => { i.requestUndoOnBackspace(); }); }); } } function lG(t) { return ( t.length > rG && t[t.length - 1] === " " && t[t.length - 2] !== " " ); } function dG(t) { const e = sG.exec(t); return e ? e[aG] : null; } function uG(t, e) { return e.schema.checkAttributeInSelection( e.createSelection(t), "linkHref" ); } function hG(t) { const e = t.start.nodeAfter; return !!e && e.hasAttribute("linkHref"); } class mG extends au { static get requires() { return [FW, nG, cG]; } static get pluginName() { return "Link"; } } class gG extends (null && Plugin) { static get requires() { return ["ImageEditing", "ImageUtils", LinkEditing]; } static get pluginName() { return "LinkImageEditing"; } afterInit() { const t = this.editor; const e = t.model.schema; if (t.plugins.has("ImageBlockEditing")) { e.extend("imageBlock", { allowAttributes: ["linkHref"] }); } t.conversion.for("upcast").add(fG(t)); t.conversion.for("downcast").add(pG(t)); this._enableAutomaticDecorators(); this._enableManualDecorators(); } _enableAutomaticDecorators() { const t = this.editor; const e = t.commands.get("link"); const n = e.automaticDecorators; if (n.length) { t.conversion.for("downcast").add(n.getDispatcherForLinkedImage()); } } _enableManualDecorators() { const t = this.editor; const e = t.commands.get("link"); for (const n of e.manualDecorators) { if (t.plugins.has("ImageBlockEditing")) { t.model.schema.extend("imageBlock", { allowAttributes: n.id }); } if (t.plugins.has("ImageInlineEditing")) { t.model.schema.extend("imageInline", { allowAttributes: n.id }); } t.conversion.for("downcast").add(kG(n)); t.conversion.for("upcast").add(bG(t, n)); } } } function fG(t) { const e = t.plugins.has("ImageInlineEditing"); const n = t.plugins.get("ImageUtils"); return (t) => { t.on( "element:a", (t, i, o) => { const r = i.viewItem; const s = n.findViewImgElement(r); if (!s) { return; } const a = s.findAncestor((t) => n.isBlockImageView(t)); if (e && !a) { return; } const c = { attributes: ["href"] }; if (!o.consumable.consume(r, c)) { return; } const l = r.getAttribute("href"); if (!l) { return; } let d = i.modelCursor.parent; if (!d.is("element", "imageBlock")) { const t = o.convertItem(s, i.modelCursor); i.modelRange = t.modelRange; i.modelCursor = t.modelCursor; d = i.modelCursor.nodeBefore; } if (d && d.is("element", "imageBlock")) { o.writer.setAttribute("linkHref", l, d); } }, { priority: "high" } ); }; } function pG(t) { const e = t.plugins.get("ImageUtils"); return (t) => { t.on( "attribute:linkHref:imageBlock", (t, n, i) => { if (!i.consumable.consume(n.item, t.name)) { return; } const o = i.mapper.toViewElement(n.item); const r = i.writer; const s = Array.from(o.getChildren()).find((t) => t.is("element", "a") ); const a = e.findViewImgElement(o); const c = a.parent.is("element", "picture") ? a.parent : a; if (s) { if (n.attributeNewValue) { r.setAttribute("href", n.attributeNewValue, s); } else { r.move(r.createRangeOn(c), r.createPositionAt(o, 0)); r.remove(s); } } else { const t = r.createContainerElement("a", { href: n.attributeNewValue, }); r.insert(r.createPositionAt(o, 0), t); r.move(r.createRangeOn(c), r.createPositionAt(t, 0)); } }, { priority: "high" } ); }; } function kG(t) { return (e) => { e.on(`attribute:${t.id}:imageBlock`, (e, n, i) => { const o = i.mapper.toViewElement(n.item); const r = Array.from(o.getChildren()).find((t) => t.is("element", "a") ); if (!r) { return; } for (const [e, n] of toMap(t.attributes)) { i.writer.setAttribute(e, n, r); } if (t.classes) { i.writer.addClass(t.classes, r); } for (const e in t.styles) { i.writer.setStyle(e, t.styles[e], r); } }); }; } function bG(t, e) { const n = t.plugins.has("ImageInlineEditing"); const i = t.plugins.get("ImageUtils"); return (t) => { t.on( "element:a", (t, o, r) => { const s = o.viewItem; const a = i.findViewImgElement(s); if (!a) { return; } const c = a.findAncestor((t) => i.isBlockImageView(t)); if (n && !c) { return; } const l = new Matcher(e._createPattern()); const d = l.match(s); if (!d) { return; } if (!r.consumable.consume(s, d.match)) { return; } const u = o.modelCursor.nodeBefore || o.modelCursor.parent; r.writer.setAttribute(e.id, true, u); }, { priority: "high" } ); }; } class wG extends (null && Plugin) { static get requires() { return [LinkEditing, LinkUI, "ImageBlockEditing"]; } static get pluginName() { return "LinkImageUI"; } init() { const t = this.editor; const e = t.editing.view.document; this.listenTo( e, "click", (e, n) => { if (this._isSelectedLinkedImage(t.model.document.selection)) { n.preventDefault(); e.stop(); } }, { priority: "high" } ); this._createToolbarLinkImageButton(); } _createToolbarLinkImageButton() { const t = this.editor; const e = t.t; t.ui.componentFactory.add("linkImage", (n) => { const i = new ButtonView(n); const o = t.plugins.get("LinkUI"); const r = t.commands.get("link"); i.set({ isEnabled: true, label: e("Link image"), icon: linkIcon, keystroke: LINK_KEYSTROKE, tooltip: true, isToggleable: true, }); i.bind("isEnabled").to(r, "isEnabled"); i.bind("isOn").to(r, "value", (t) => !!t); this.listenTo(i, "execute", () => { if (this._isSelectedLinkedImage(t.model.document.selection)) { o._addActionsView(); } else { o._showUI(true); } }); return i; }); } _isSelectedLinkedImage(t) { const e = t.getSelectedElement(); const n = this.editor.plugins.get("ImageUtils"); return n.isImage(e) && e.hasAttribute("linkHref"); } } var AG = n(1634); var _G = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; _G.insert = "head"; _G.singleton = true; var CG = Zd()(AG.A, _G); const vG = AG.A.locals || {}; class yG extends (null && Plugin) { static get requires() { return [LinkImageEditing, LinkImageUI]; } static get pluginName() { return "LinkImage"; } } function xG() { return { baseUrl: null, breaks: false, extensions: null, gfm: true, headerIds: true, headerPrefix: "", highlight: null, langPrefix: "language-", mangle: true, pedantic: false, renderer: null, sanitize: false, sanitizer: null, silent: false, smartLists: false, smartypants: false, tokenizer: null, walkTokens: null, xhtml: false, }; } let EG = xG(); function DG(t) { EG = t; } const SG = /[&<>"']/; const TG = /[&<>"']/g; const BG = /[<>"']|&(?!#?\w+;)/; const MG = /[<>"']|&(?!#?\w+;)/g; const IG = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", }; const LG = (t) => IG[t]; function NG(t, e) { if (e) { if (SG.test(t)) { return t.replace(TG, LG); } } else { if (BG.test(t)) { return t.replace(MG, LG); } } return t; } const zG = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi; function PG(t) { return t.replace(zG, (t, e) => { e = e.toLowerCase(); if (e === "colon") return ":"; if (e.charAt(0) === "#") { return e.charAt(1) === "x" ? String.fromCharCode(parseInt(e.substring(2), 16)) : String.fromCharCode(+e.substring(1)); } return ""; }); } const RG = /(^|[^\[])\^/g; function VG(t, e) { t = t.source || t; e = e || ""; const n = { replace: (e, i) => { i = i.source || i; i = i.replace(RG, "$1"); t = t.replace(e, i); return n; }, getRegex: () => new RegExp(t, e), }; return n; } const OG = /[^\w:]/g; const FG = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i; function jG(t, e, n) { if (t) { let t; try { t = decodeURIComponent(PG(n)).replace(OG, "").toLowerCase(); } catch (t) { return null; } if ( t.indexOf("javascript:") === 0 || t.indexOf("vbscript:") === 0 || t.indexOf("data:") === 0 ) { return null; } } if (e && !FG.test(n)) { n = WG(e, n); } try { n = encodeURI(n).replace(/%25/g, "%"); } catch (t) { return null; } return n; } const HG = {}; const UG = /^[^:]+:\/*[^/]*$/; const $G = /^([^:]+:)[\s\S]*$/; const qG = /^([^:]+:\/*[^/]*)[\s\S]*$/; function WG(t, e) { if (!HG[" " + t]) { if (UG.test(t)) { HG[" " + t] = t + "/"; } else { HG[" " + t] = QG(t, "/", true); } } t = HG[" " + t]; const n = t.indexOf(":") === -1; if (e.substring(0, 2) === "//") { if (n) { return e; } return t.replace($G, "$1") + e; } else if (e.charAt(0) === "/") { if (n) { return e; } return t.replace(qG, "$1") + e; } else { return t + e; } } const GG = { exec: function t() {} }; function KG(t) { let e = 1, n, i; for (; e < arguments.length; e++) { n = arguments[e]; for (i in n) { if (Object.prototype.hasOwnProperty.call(n, i)) { t[i] = n[i]; } } } return t; } function YG(t, e) { const n = t.replace(/\|/g, (t, e, n) => { let i = false, o = e; while (--o >= 0 && n[o] === "\\") i = !i; if (i) { return "|"; } else { return " |"; } }), i = n.split(/ \|/); let o = 0; if (!i[0].trim()) { i.shift(); } if (i.length > 0 && !i[i.length - 1].trim()) { i.pop(); } if (i.length > e) { i.splice(e); } else { while (i.length < e) i.push(""); } for (; o < i.length; o++) { i[o] = i[o].trim().replace(/\\\|/g, "|"); } return i; } function QG(t, e, n) { const i = t.length; if (i === 0) { return ""; } let o = 0; while (o < i) { const r = t.charAt(i - o - 1); if (r === e && !n) { o++; } else if (r !== e && n) { o++; } else { break; } } return t.substr(0, i - o); } function ZG(t, e) { if (t.indexOf(e[1]) === -1) { return -1; } const n = t.length; let i = 0, o = 0; for (; o < n; o++) { if (t[o] === "\\") { o++; } else if (t[o] === e[0]) { i++; } else if (t[o] === e[1]) { i--; if (i < 0) { return o; } } } return -1; } function JG(t) { if (t && t.sanitize && !t.silent) { console.warn( "marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options" ); } } function XG(t, e) { if (e < 1) { return ""; } let n = ""; while (e > 1) { if (e & 1) { n += t; } e >>= 1; t += t; } return n + t; } function tK(t, e, n, i) { const o = e.href; const r = e.title ? NG(e.title) : null; const s = t[1].replace(/\\([\[\]])/g, "$1"); if (t[0].charAt(0) !== "!") { i.state.inLink = true; const t = { type: "link", raw: n, href: o, title: r, text: s, tokens: i.inlineTokens(s, []), }; i.state.inLink = false; return t; } else { return { type: "image", raw: n, href: o, title: r, text: NG(s) }; } } function eK(t, e) { const n = t.match(/^(\s+)(?:```)/); if (n === null) { return e; } const i = n[1]; return e .split("\n") .map((t) => { const e = t.match(/^\s+/); if (e === null) { return t; } const [n] = e; if (n.length >= i.length) { return t.slice(i.length); } return t; }) .join("\n"); } class nK { constructor(t) { this.options = t || EG; } space(t) { const e = this.rules.block.newline.exec(t); if (e && e[0].length > 0) { return { type: "space", raw: e[0] }; } } code(t) { const e = this.rules.block.code.exec(t); if (e) { const t = e[0].replace(/^ {1,4}/gm, ""); return { type: "code", raw: e[0], codeBlockStyle: "indented", text: !this.options.pedantic ? QG(t, "\n") : t, }; } } fences(t) { const e = this.rules.block.fences.exec(t); if (e) { const t = e[0]; const n = eK(t, e[3] || ""); return { type: "code", raw: t, lang: e[2] ? e[2].trim() : e[2], text: n, }; } } heading(t) { const e = this.rules.block.heading.exec(t); if (e) { let t = e[2].trim(); if (/#$/.test(t)) { const e = QG(t, "#"); if (this.options.pedantic) { t = e.trim(); } else if (!e || / $/.test(e)) { t = e.trim(); } } const n = { type: "heading", raw: e[0], depth: e[1].length, text: t, tokens: [], }; this.lexer.inline(n.text, n.tokens); return n; } } hr(t) { const e = this.rules.block.hr.exec(t); if (e) { return { type: "hr", raw: e[0] }; } } blockquote(t) { const e = this.rules.block.blockquote.exec(t); if (e) { const t = e[0].replace(/^ *> ?/gm, ""); return { type: "blockquote", raw: e[0], tokens: this.lexer.blockTokens(t, []), text: t, }; } } list(t) { let e = this.rules.block.list.exec(t); if (e) { let n, i, o, r, s, a, c, l, d, u, h, m; let g = e[1].trim(); const f = g.length > 1; const p = { type: "list", raw: "", ordered: f, start: f ? +g.slice(0, -1) : "", loose: false, items: [], }; g = f ? `\\d{1,9}\\${g.slice(-1)}` : `\\${g}`; if (this.options.pedantic) { g = f ? g : "[*+-]"; } const k = new RegExp(`^( {0,3}${g})((?: [^\\n]*)?(?:\\n|$))`); while (t) { m = false; if (!(e = k.exec(t))) { break; } if (this.rules.block.hr.test(t)) { break; } n = e[0]; t = t.substring(n.length); l = e[2].split("\n", 1)[0]; d = t.split("\n", 1)[0]; if (this.options.pedantic) { r = 2; h = l.trimLeft(); } else { r = e[2].search(/[^ ]/); r = r > 4 ? 1 : r; h = l.slice(r); r += e[1].length; } a = false; if (!l && /^ *$/.test(d)) { n += d + "\n"; t = t.substring(d.length + 1); m = true; } if (!m) { const e = new RegExp( `^ {0,${Math.min(3, r - 1)}}(?:[*+-]|\\d{1,9}[.)])` ); while (t) { u = t.split("\n", 1)[0]; l = u; if (this.options.pedantic) { l = l.replace(/^ {1,4}(?=( {4})*[^ ])/g, " "); } if (e.test(l)) { break; } if (l.search(/[^ ]/) >= r || !l.trim()) { h += "\n" + l.slice(r); } else if (!a) { h += "\n" + l; } else { break; } if (!a && !l.trim()) { a = true; } n += u + "\n"; t = t.substring(u.length + 1); } } if (!p.loose) { if (c) { p.loose = true; } else if (/\n *\n *$/.test(n)) { c = true; } } if (this.options.gfm) { i = /^\[[ xX]\] /.exec(h); if (i) { o = i[0] !== "[ ] "; h = h.replace(/^\[[ xX]\] +/, ""); } } p.items.push({ type: "list_item", raw: n, task: !!i, checked: o, loose: false, text: h, }); p.raw += n; } p.items[p.items.length - 1].raw = n.trimRight(); p.items[p.items.length - 1].text = h.trimRight(); p.raw = p.raw.trimRight(); const b = p.items.length; for (s = 0; s < b; s++) { this.lexer.state.top = false; p.items[s].tokens = this.lexer.blockTokens(p.items[s].text, []); const t = p.items[s].tokens.filter((t) => t.type === "space"); const e = t.every((t) => { const e = t.raw.split(""); let n = 0; for (const t of e) { if (t === "\n") { n += 1; } if (n > 1) { return true; } } return false; }); if (!p.loose && t.length && e) { p.loose = true; p.items[s].loose = true; } } return p; } } html(t) { const e = this.rules.block.html.exec(t); if (e) { const t = { type: "html", raw: e[0], pre: !this.options.sanitizer && (e[1] === "pre" || e[1] === "script" || e[1] === "style"), text: e[0], }; if (this.options.sanitize) { t.type = "paragraph"; t.text = this.options.sanitizer ? this.options.sanitizer(e[0]) : NG(e[0]); t.tokens = []; this.lexer.inline(t.text, t.tokens); } return t; } } def(t) { const e = this.rules.block.def.exec(t); if (e) { if (e[3]) e[3] = e[3].substring(1, e[3].length - 1); const t = e[1].toLowerCase().replace(/\s+/g, " "); return { type: "def", tag: t, raw: e[0], href: e[2], title: e[3] }; } } table(t) { const e = this.rules.block.table.exec(t); if (e) { const t = { type: "table", header: YG(e[1]).map((t) => ({ text: t })), align: e[2].replace(/^ *|\| *$/g, "").split(/ *\| */), rows: e[3] && e[3].trim() ? e[3].replace(/\n[ \t]*$/, "").split("\n") : [], }; if (t.header.length === t.align.length) { t.raw = e[0]; let n = t.align.length; let i, o, r, s; for (i = 0; i < n; i++) { if (/^ *-+: *$/.test(t.align[i])) { t.align[i] = "right"; } else if (/^ *:-+: *$/.test(t.align[i])) { t.align[i] = "center"; } else if (/^ *:-+ *$/.test(t.align[i])) { t.align[i] = "left"; } else { t.align[i] = null; } } n = t.rows.length; for (i = 0; i < n; i++) { t.rows[i] = YG(t.rows[i], t.header.length).map((t) => ({ text: t, })); } n = t.header.length; for (o = 0; o < n; o++) { t.header[o].tokens = []; this.lexer.inlineTokens(t.header[o].text, t.header[o].tokens); } n = t.rows.length; for (o = 0; o < n; o++) { s = t.rows[o]; for (r = 0; r < s.length; r++) { s[r].tokens = []; this.lexer.inlineTokens(s[r].text, s[r].tokens); } } return t; } } } lheading(t) { const e = this.rules.block.lheading.exec(t); if (e) { const t = { type: "heading", raw: e[0], depth: e[2].charAt(0) === "=" ? 1 : 2, text: e[1], tokens: [], }; this.lexer.inline(t.text, t.tokens); return t; } } paragraph(t) { const e = this.rules.block.paragraph.exec(t); if (e) { const t = { type: "paragraph", raw: e[0], text: e[1].charAt(e[1].length - 1) === "\n" ? e[1].slice(0, -1) : e[1], tokens: [], }; this.lexer.inline(t.text, t.tokens); return t; } } text(t) { const e = this.rules.block.text.exec(t); if (e) { const t = { type: "text", raw: e[0], text: e[0], tokens: [] }; this.lexer.inline(t.text, t.tokens); return t; } } escape(t) { const e = this.rules.inline.escape.exec(t); if (e) { return { type: "escape", raw: e[0], text: NG(e[1]) }; } } tag(t) { const e = this.rules.inline.tag.exec(t); if (e) { if (!this.lexer.state.inLink && /^/i.test(e[0])) { this.lexer.state.inLink = false; } if ( !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(e[0]) ) { this.lexer.state.inRawBlock = true; } else if ( this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0]) ) { this.lexer.state.inRawBlock = false; } return { type: this.options.sanitize ? "text" : "html", raw: e[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(e[0]) : NG(e[0]) : e[0], }; } } link(t) { const e = this.rules.inline.link.exec(t); if (e) { const t = e[2].trim(); if (!this.options.pedantic && /^$/.test(t)) { return; } const e = QG(t.slice(0, -1), "\\"); if ((t.length - e.length) % 2 === 0) { return; } } else { const t = ZG(e[2], "()"); if (t > -1) { const n = e[0].indexOf("!") === 0 ? 5 : 4; const i = n + e[1].length + t; e[2] = e[2].substring(0, t); e[0] = e[0].substring(0, i).trim(); e[3] = ""; } } let n = e[2]; let i = ""; if (this.options.pedantic) { const t = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n); if (t) { n = t[1]; i = t[3]; } } else { i = e[3] ? e[3].slice(1, -1) : ""; } n = n.trim(); if (/^$/.test(t)) { n = n.slice(1); } else { n = n.slice(1, -1); } } return tK( e, { href: n ? n.replace(this.rules.inline._escapes, "$1") : n, title: i ? i.replace(this.rules.inline._escapes, "$1") : i, }, e[0], this.lexer ); } } reflink(t, e) { let n; if ( (n = this.rules.inline.reflink.exec(t)) || (n = this.rules.inline.nolink.exec(t)) ) { let t = (n[2] || n[1]).replace(/\s+/g, " "); t = e[t.toLowerCase()]; if (!t || !t.href) { const t = n[0].charAt(0); return { type: "text", raw: t, text: t }; } return tK(n, t, n[0], this.lexer); } } emStrong(t, e, n = "") { let i = this.rules.inline.emStrong.lDelim.exec(t); if (!i) return; if (i[3] && n.match(/[\p{L}\p{N}]/u)) return; const o = i[1] || i[2] || ""; if ( !o || (o && (n === "" || this.rules.inline.punctuation.exec(n))) ) { const n = i[0].length - 1; let o, r, s = n, a = 0; const c = i[0][0] === "*" ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd; c.lastIndex = 0; e = e.slice(-1 * t.length + n); while ((i = c.exec(e)) != null) { o = i[1] || i[2] || i[3] || i[4] || i[5] || i[6]; if (!o) continue; r = o.length; if (i[3] || i[4]) { s += r; continue; } else if (i[5] || i[6]) { if (n % 3 && !((n + r) % 3)) { a += r; continue; } } s -= r; if (s > 0) continue; r = Math.min(r, r + s + a); if (Math.min(n, r) % 2) { const e = t.slice(1, n + i.index + r); return { type: "em", raw: t.slice(0, n + i.index + r + 1), text: e, tokens: this.lexer.inlineTokens(e, []), }; } const e = t.slice(2, n + i.index + r - 1); return { type: "strong", raw: t.slice(0, n + i.index + r + 1), text: e, tokens: this.lexer.inlineTokens(e, []), }; } } } codespan(t) { const e = this.rules.inline.code.exec(t); if (e) { let t = e[2].replace(/\n/g, " "); const n = /[^ ]/.test(t); const i = /^ /.test(t) && / $/.test(t); if (n && i) { t = t.substring(1, t.length - 1); } t = NG(t, true); return { type: "codespan", raw: e[0], text: t }; } } br(t) { const e = this.rules.inline.br.exec(t); if (e) { return { type: "br", raw: e[0] }; } } del(t) { const e = this.rules.inline.del.exec(t); if (e) { return { type: "del", raw: e[0], text: e[2], tokens: this.lexer.inlineTokens(e[2], []), }; } } autolink(t, e) { const n = this.rules.inline.autolink.exec(t); if (n) { let t, i; if (n[2] === "@") { t = NG(this.options.mangle ? e(n[1]) : n[1]); i = "mailto:" + t; } else { t = NG(n[1]); i = t; } return { type: "link", raw: n[0], text: t, href: i, tokens: [{ type: "text", raw: t, text: t }], }; } } url(t, e) { let n; if ((n = this.rules.inline.url.exec(t))) { let t, i; if (n[2] === "@") { t = NG(this.options.mangle ? e(n[0]) : n[0]); i = "mailto:" + t; } else { let e; do { e = n[0]; n[0] = this.rules.inline._backpedal.exec(n[0])[0]; } while (e !== n[0]); t = NG(n[0]); if (n[1] === "www.") { i = "http://" + t; } else { i = t; } } return { type: "link", raw: n[0], text: t, href: i, tokens: [{ type: "text", raw: t, text: t }], }; } } inlineText(t, e) { const n = this.rules.inline.text.exec(t); if (n) { let t; if (this.lexer.state.inRawBlock) { t = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(n[0]) : NG(n[0]) : n[0]; } else { t = NG(this.options.smartypants ? e(n[0]) : n[0]); } return { type: "text", raw: n[0], text: t }; } } } const iK = { newline: /^(?: *(?:\n|$))+/, code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/, fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/, hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/, heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, list: /^( {0,3}bull)( [^\n]+?)?(?:\n|$)/, html: "^ {0,3}(?:" + "<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)" + "|comment[^\\n]*(\\n+|$)" + "|<\\?[\\s\\S]*?(?:\\?>\\n*|$)" + "|\\n*|$)" + "|\\n*|$)" + "|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)" + "|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)" + "|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)" + ")", def: /^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/, table: GG, lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/, _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, text: /^[^\n]+/, }; iK._label = /(?!\s*\])(?:\\.|[^\[\]\\])+/; iK._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/; iK.def = VG(iK.def) .replace("label", iK._label) .replace("title", iK._title) .getRegex(); iK.bullet = /(?:[*+-]|\d{1,9}[.)])/; iK.listItemStart = VG(/^( *)(bull) */) .replace("bull", iK.bullet) .getRegex(); iK.list = VG(iK.list) .replace(/bull/g, iK.bullet) .replace( "hr", "\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))" ) .replace("def", "\\n+(?=" + iK.def.source + ")") .getRegex(); iK._tag = "address|article|aside|base|basefont|blockquote|body|caption" + "|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption" + "|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe" + "|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option" + "|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr" + "|track|ul"; iK._comment = /|$)/; iK.html = VG(iK.html, "i") .replace("comment", iK._comment) .replace("tag", iK._tag) .replace( "attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/ ) .getRegex(); iK.paragraph = VG(iK._paragraph) .replace("hr", iK.hr) .replace("heading", " {0,3}#{1,6} ") .replace("|lheading", "") .replace("|table", "") .replace("blockquote", " {0,3}>") .replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n") .replace("list", " {0,3}(?:[*+-]|1[.)]) ") .replace( "html", ")|<(?:script|pre|style|textarea|!--)" ) .replace("tag", iK._tag) .getRegex(); iK.blockquote = VG(iK.blockquote) .replace("paragraph", iK.paragraph) .getRegex(); iK.normal = KG({}, iK); iK.gfm = KG({}, iK.normal, { table: "^ *([^\\n ].*\\|.*)\\n" + " {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?" + "(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)", }); iK.gfm.table = VG(iK.gfm.table) .replace("hr", iK.hr) .replace("heading", " {0,3}#{1,6} ") .replace("blockquote", " {0,3}>") .replace("code", " {4}[^\\n]") .replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n") .replace("list", " {0,3}(?:[*+-]|1[.)]) ") .replace( "html", ")|<(?:script|pre|style|textarea|!--)" ) .replace("tag", iK._tag) .getRegex(); iK.gfm.paragraph = VG(iK._paragraph) .replace("hr", iK.hr) .replace("heading", " {0,3}#{1,6} ") .replace("|lheading", "") .replace("table", iK.gfm.table) .replace("blockquote", " {0,3}>") .replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n") .replace("list", " {0,3}(?:[*+-]|1[.)]) ") .replace( "html", ")|<(?:script|pre|style|textarea|!--)" ) .replace("tag", iK._tag) .getRegex(); iK.pedantic = KG({}, iK.normal, { html: VG( "^ *(?:comment *(?:\\n|\\s*$)" + "|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)" + "|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))" ) .replace("comment", iK._comment) .replace( /tag/g, "(?!(?:" + "a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub" + "|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)" + "\\b)\\w+(?!:|[^\\w\\s@]*@)\\b" ) .getRegex(), def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: GG, paragraph: VG(iK.normal._paragraph) .replace("hr", iK.hr) .replace("heading", " *#{1,6} *[^\n]") .replace("lheading", iK.lheading) .replace("blockquote", " {0,3}>") .replace("|fences", "") .replace("|list", "") .replace("|html", "") .getRegex(), }); const oK = { escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, url: GG, tag: "^comment" + "|^" + "|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>" + "|^<\\?[\\s\\S]*?\\?>" + "|^" + "|^", link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/, reflink: /^!?\[(label)\]\[(ref)\]/, nolink: /^!?\[(ref)\](?:\[\])?/, reflinkSearch: "reflink|nolink(?!\\()", emStrong: { lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/, rDelimAst: /^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/, rDelimUnd: /^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/, }, code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, br: /^( {2,}|\\)\n(?!\s*$)/, del: GG, text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"; oK.punctuation = VG(oK.punctuation) .replace(/punctuation/g, oK._punctuation) .getRegex(); oK.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g; oK.escapedEmSt = /\\\*|\\_/g; oK._comment = VG(iK._comment) .replace("(?:--\x3e|$)", "--\x3e") .getRegex(); oK.emStrong.lDelim = VG(oK.emStrong.lDelim) .replace(/punct/g, oK._punctuation) .getRegex(); oK.emStrong.rDelimAst = VG(oK.emStrong.rDelimAst, "g") .replace(/punct/g, oK._punctuation) .getRegex(); oK.emStrong.rDelimUnd = VG(oK.emStrong.rDelimUnd, "g") .replace(/punct/g, oK._punctuation) .getRegex(); oK._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g; oK._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/; oK._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/; oK.autolink = VG(oK.autolink) .replace("scheme", oK._scheme) .replace("email", oK._email) .getRegex(); oK._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/; oK.tag = VG(oK.tag) .replace("comment", oK._comment) .replace("attribute", oK._attribute) .getRegex(); oK._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; oK._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/; oK._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/; oK.link = VG(oK.link) .replace("label", oK._label) .replace("href", oK._href) .replace("title", oK._title) .getRegex(); oK.reflink = VG(oK.reflink) .replace("label", oK._label) .replace("ref", iK._label) .getRegex(); oK.nolink = VG(oK.nolink).replace("ref", iK._label).getRegex(); oK.reflinkSearch = VG(oK.reflinkSearch, "g") .replace("reflink", oK.reflink) .replace("nolink", oK.nolink) .getRegex(); oK.normal = KG({}, oK); oK.pedantic = KG({}, oK.normal, { strong: { start: /^__|\*\*/, middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, endAst: /\*\*(?!\*)/g, endUnd: /__(?!_)/g, }, em: { start: /^_|\*/, middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/, endAst: /\*(?!\*)/g, endUnd: /_(?!_)/g, }, link: VG(/^!?\[(label)\]\((.*?)\)/) .replace("label", oK._label) .getRegex(), reflink: VG(/^!?\[(label)\]\s*\[([^\]]*)\]/) .replace("label", oK._label) .getRegex(), }); oK.gfm = KG({}, oK.normal, { escape: VG(oK.escape).replace("])", "~|])").getRegex(), _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/, url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ 0.5) { i = "x" + i.toString(16); } e += "&#" + i + ";"; } return e; } class aK { constructor(t) { this.tokens = []; this.tokens.links = Object.create(null); this.options = t || EG; this.options.tokenizer = this.options.tokenizer || new nK(); this.tokenizer = this.options.tokenizer; this.tokenizer.options = this.options; this.tokenizer.lexer = this; this.inlineQueue = []; this.state = { inLink: false, inRawBlock: false, top: true }; const e = { block: iK.normal, inline: oK.normal }; if (this.options.pedantic) { e.block = iK.pedantic; e.inline = oK.pedantic; } else if (this.options.gfm) { e.block = iK.gfm; if (this.options.breaks) { e.inline = oK.breaks; } else { e.inline = oK.gfm; } } this.tokenizer.rules = e; } static get rules() { return { block: iK, inline: oK }; } static lex(t, e) { const n = new aK(e); return n.lex(t); } static lexInline(t, e) { const n = new aK(e); return n.inlineTokens(t); } lex(t) { t = t.replace(/\r\n|\r/g, "\n").replace(/\t/g, " "); this.blockTokens(t, this.tokens); let e; while ((e = this.inlineQueue.shift())) { this.inlineTokens(e.src, e.tokens); } return this.tokens; } blockTokens(t, e = []) { if (this.options.pedantic) { t = t.replace(/^ +$/gm, ""); } let n, i, o, r; while (t) { if ( this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((i) => { if ((n = i.call({ lexer: this }, t, e))) { t = t.substring(n.raw.length); e.push(n); return true; } return false; }) ) { continue; } if ((n = this.tokenizer.space(t))) { t = t.substring(n.raw.length); if (n.raw.length === 1 && e.length > 0) { e[e.length - 1].raw += "\n"; } else { e.push(n); } continue; } if ((n = this.tokenizer.code(t))) { t = t.substring(n.raw.length); i = e[e.length - 1]; if (i && (i.type === "paragraph" || i.type === "text")) { i.raw += "\n" + n.raw; i.text += "\n" + n.text; this.inlineQueue[this.inlineQueue.length - 1].src = i.text; } else { e.push(n); } continue; } if ((n = this.tokenizer.fences(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.heading(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.hr(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.blockquote(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.list(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.html(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.def(t))) { t = t.substring(n.raw.length); i = e[e.length - 1]; if (i && (i.type === "paragraph" || i.type === "text")) { i.raw += "\n" + n.raw; i.text += "\n" + n.raw; this.inlineQueue[this.inlineQueue.length - 1].src = i.text; } else if (!this.tokens.links[n.tag]) { this.tokens.links[n.tag] = { href: n.href, title: n.title }; } continue; } if ((n = this.tokenizer.table(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.lheading(t))) { t = t.substring(n.raw.length); e.push(n); continue; } o = t; if (this.options.extensions && this.options.extensions.startBlock) { let e = Infinity; const n = t.slice(1); let i; this.options.extensions.startBlock.forEach(function (t) { i = t.call({ lexer: this }, n); if (typeof i === "number" && i >= 0) { e = Math.min(e, i); } }); if (e < Infinity && e >= 0) { o = t.substring(0, e + 1); } } if (this.state.top && (n = this.tokenizer.paragraph(o))) { i = e[e.length - 1]; if (r && i.type === "paragraph") { i.raw += "\n" + n.raw; i.text += "\n" + n.text; this.inlineQueue.pop(); this.inlineQueue[this.inlineQueue.length - 1].src = i.text; } else { e.push(n); } r = o.length !== t.length; t = t.substring(n.raw.length); continue; } if ((n = this.tokenizer.text(t))) { t = t.substring(n.raw.length); i = e[e.length - 1]; if (i && i.type === "text") { i.raw += "\n" + n.raw; i.text += "\n" + n.text; this.inlineQueue.pop(); this.inlineQueue[this.inlineQueue.length - 1].src = i.text; } else { e.push(n); } continue; } if (t) { const e = "Infinite loop on byte: " + t.charCodeAt(0); if (this.options.silent) { console.error(e); break; } else { throw new Error(e); } } } this.state.top = true; return e; } inline(t, e) { this.inlineQueue.push({ src: t, tokens: e }); } inlineTokens(t, e = []) { let n, i, o; let r = t; let s; let a, c; if (this.tokens.links) { const t = Object.keys(this.tokens.links); if (t.length > 0) { while ( (s = this.tokenizer.rules.inline.reflinkSearch.exec(r)) != null ) { if (t.includes(s[0].slice(s[0].lastIndexOf("[") + 1, -1))) { r = r.slice(0, s.index) + "[" + XG("a", s[0].length - 2) + "]" + r.slice( this.tokenizer.rules.inline.reflinkSearch.lastIndex ); } } } } while ((s = this.tokenizer.rules.inline.blockSkip.exec(r)) != null) { r = r.slice(0, s.index) + "[" + XG("a", s[0].length - 2) + "]" + r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); } while ( (s = this.tokenizer.rules.inline.escapedEmSt.exec(r)) != null ) { r = r.slice(0, s.index) + "++" + r.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex); } while (t) { if (!a) { c = ""; } a = false; if ( this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((i) => { if ((n = i.call({ lexer: this }, t, e))) { t = t.substring(n.raw.length); e.push(n); return true; } return false; }) ) { continue; } if ((n = this.tokenizer.escape(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.tag(t))) { t = t.substring(n.raw.length); i = e[e.length - 1]; if (i && n.type === "text" && i.type === "text") { i.raw += n.raw; i.text += n.text; } else { e.push(n); } continue; } if ((n = this.tokenizer.link(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.reflink(t, this.tokens.links))) { t = t.substring(n.raw.length); i = e[e.length - 1]; if (i && n.type === "text" && i.type === "text") { i.raw += n.raw; i.text += n.text; } else { e.push(n); } continue; } if ((n = this.tokenizer.emStrong(t, r, c))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.codespan(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.br(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.del(t))) { t = t.substring(n.raw.length); e.push(n); continue; } if ((n = this.tokenizer.autolink(t, sK))) { t = t.substring(n.raw.length); e.push(n); continue; } if (!this.state.inLink && (n = this.tokenizer.url(t, sK))) { t = t.substring(n.raw.length); e.push(n); continue; } o = t; if ( this.options.extensions && this.options.extensions.startInline ) { let e = Infinity; const n = t.slice(1); let i; this.options.extensions.startInline.forEach(function (t) { i = t.call({ lexer: this }, n); if (typeof i === "number" && i >= 0) { e = Math.min(e, i); } }); if (e < Infinity && e >= 0) { o = t.substring(0, e + 1); } } if ((n = this.tokenizer.inlineText(o, rK))) { t = t.substring(n.raw.length); if (n.raw.slice(-1) !== "_") { c = n.raw.slice(-1); } a = true; i = e[e.length - 1]; if (i && i.type === "text") { i.raw += n.raw; i.text += n.text; } else { e.push(n); } continue; } if (t) { const e = "Infinite loop on byte: " + t.charCodeAt(0); if (this.options.silent) { console.error(e); break; } else { throw new Error(e); } } } return e; } } class cK { constructor(t) { this.options = t || EG; } code(t, e, n) { const i = (e || "").match(/\S*/)[0]; if (this.options.highlight) { const e = this.options.highlight(t, i); if (e != null && e !== t) { n = true; t = e; } } t = t.replace(/\n$/, "") + "\n"; if (!i) { return "
" + (n ? t : NG(t, true)) + "
\n"; } return ( '
' +
            (n ? t : NG(t, true)) +
            "
\n" ); } blockquote(t) { return "
\n" + t + "
\n"; } html(t) { return t; } heading(t, e, n, i) { if (this.options.headerIds) { return ( "' + t + "\n" ); } return "" + t + "\n"; } hr() { return this.options.xhtml ? "
\n" : "
\n"; } list(t, e, n) { const i = e ? "ol" : "ul", o = e && n !== 1 ? ' start="' + n + '"' : ""; return "<" + i + o + ">\n" + t + "\n"; } listitem(t) { return "
  • " + t + "
  • \n"; } checkbox(t) { return ( " " ); } paragraph(t) { return "

    " + t + "

    \n"; } table(t, e) { if (e) e = "" + e + ""; return ( "\n" + "\n" + t + "\n" + e + "
    \n" ); } tablerow(t) { return "\n" + t + "\n"; } tablecell(t, e) { const n = e.header ? "th" : "td"; const i = e.align ? "<" + n + ' align="' + e.align + '">' : "<" + n + ">"; return i + t + "\n"; } strong(t) { return "" + t + ""; } em(t) { return "" + t + ""; } codespan(t) { return "" + t + ""; } br() { return this.options.xhtml ? "
    " : "
    "; } del(t) { return "" + t + ""; } link(t, e, n) { t = jG(this.options.sanitize, this.options.baseUrl, t); if (t === null) { return n; } let i = '
    "; return i; } image(t, e, n) { t = jG(this.options.sanitize, this.options.baseUrl, t); if (t === null) { return n; } let i = '' + n + '" : ">"; return i; } text(t) { return t; } } class lK { strong(t) { return t; } em(t) { return t; } codespan(t) { return t; } del(t) { return t; } html(t) { return t; } text(t) { return t; } link(t, e, n) { return "" + n; } image(t, e, n) { return "" + n; } br() { return ""; } } class dK { constructor() { this.seen = {}; } serialize(t) { return t .toLowerCase() .trim() .replace(/<[!\/a-z].*?>/gi, "") .replace( /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, "" ) .replace(/\s/g, "-"); } getNextSafeSlug(t, e) { let n = t; let i = 0; if (this.seen.hasOwnProperty(n)) { i = this.seen[t]; do { i++; n = t + "-" + i; } while (this.seen.hasOwnProperty(n)); } if (!e) { this.seen[t] = i; this.seen[n] = 0; } return n; } slug(t, e = {}) { const n = this.serialize(t); return this.getNextSafeSlug(n, e.dryrun); } } class uK { constructor(t) { this.options = t || EG; this.options.renderer = this.options.renderer || new cK(); this.renderer = this.options.renderer; this.renderer.options = this.options; this.textRenderer = new lK(); this.slugger = new dK(); } static parse(t, e) { const n = new uK(e); return n.parse(t); } static parseInline(t, e) { const n = new uK(e); return n.parseInline(t); } parse(t, e = true) { let n = "", i, o, r, s, a, c, l, d, u, h, m, g, f, p, k, b, w, A, _; const C = t.length; for (i = 0; i < C; i++) { h = t[i]; if ( this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[h.type] ) { _ = this.options.extensions.renderers[h.type].call( { parser: this }, h ); if ( _ !== false || ![ "space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text", ].includes(h.type) ) { n += _ || ""; continue; } } switch (h.type) { case "space": { continue; } case "hr": { n += this.renderer.hr(); continue; } case "heading": { n += this.renderer.heading( this.parseInline(h.tokens), h.depth, PG(this.parseInline(h.tokens, this.textRenderer)), this.slugger ); continue; } case "code": { n += this.renderer.code(h.text, h.lang, h.escaped); continue; } case "table": { d = ""; l = ""; s = h.header.length; for (o = 0; o < s; o++) { l += this.renderer.tablecell( this.parseInline(h.header[o].tokens), { header: true, align: h.align[o] } ); } d += this.renderer.tablerow(l); u = ""; s = h.rows.length; for (o = 0; o < s; o++) { c = h.rows[o]; l = ""; a = c.length; for (r = 0; r < a; r++) { l += this.renderer.tablecell( this.parseInline(c[r].tokens), { header: false, align: h.align[r] } ); } u += this.renderer.tablerow(l); } n += this.renderer.table(d, u); continue; } case "blockquote": { u = this.parse(h.tokens); n += this.renderer.blockquote(u); continue; } case "list": { m = h.ordered; g = h.start; f = h.loose; s = h.items.length; u = ""; for (o = 0; o < s; o++) { k = h.items[o]; b = k.checked; w = k.task; p = ""; if (k.task) { A = this.renderer.checkbox(b); if (f) { if ( k.tokens.length > 0 && k.tokens[0].type === "paragraph" ) { k.tokens[0].text = A + " " + k.tokens[0].text; if ( k.tokens[0].tokens && k.tokens[0].tokens.length > 0 && k.tokens[0].tokens[0].type === "text" ) { k.tokens[0].tokens[0].text = A + " " + k.tokens[0].tokens[0].text; } } else { k.tokens.unshift({ type: "text", text: A }); } } else { p += A; } } p += this.parse(k.tokens, f); u += this.renderer.listitem(p, w, b); } n += this.renderer.list(u, m, g); continue; } case "html": { n += this.renderer.html(h.text); continue; } case "paragraph": { n += this.renderer.paragraph(this.parseInline(h.tokens)); continue; } case "text": { u = h.tokens ? this.parseInline(h.tokens) : h.text; while (i + 1 < C && t[i + 1].type === "text") { h = t[++i]; u += "\n" + (h.tokens ? this.parseInline(h.tokens) : h.text); } n += e ? this.renderer.paragraph(u) : u; continue; } default: { const t = 'Token with "' + h.type + '" type was not found.'; if (this.options.silent) { console.error(t); return; } else { throw new Error(t); } } } } return n; } parseInline(t, e) { e = e || this.renderer; let n = "", i, o, r; const s = t.length; for (i = 0; i < s; i++) { o = t[i]; if ( this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[o.type] ) { r = this.options.extensions.renderers[o.type].call( { parser: this }, o ); if ( r !== false || ![ "escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text", ].includes(o.type) ) { n += r || ""; continue; } } switch (o.type) { case "escape": { n += e.text(o.text); break; } case "html": { n += e.html(o.text); break; } case "link": { n += e.link(o.href, o.title, this.parseInline(o.tokens, e)); break; } case "image": { n += e.image(o.href, o.title, o.text); break; } case "strong": { n += e.strong(this.parseInline(o.tokens, e)); break; } case "em": { n += e.em(this.parseInline(o.tokens, e)); break; } case "codespan": { n += e.codespan(o.text); break; } case "br": { n += e.br(); break; } case "del": { n += e.del(this.parseInline(o.tokens, e)); break; } case "text": { n += e.text(o.text); break; } default: { const t = 'Token with "' + o.type + '" type was not found.'; if (this.options.silent) { console.error(t); return; } else { throw new Error(t); } } } } return n; } } function hK(t, e, n) { if (typeof t === "undefined" || t === null) { throw new Error("marked(): input parameter is undefined or null"); } if (typeof t !== "string") { throw new Error( "marked(): input parameter is of type " + Object.prototype.toString.call(t) + ", string expected" ); } if (typeof e === "function") { n = e; e = null; } e = KG({}, hK.defaults, e || {}); JG(e); if (n) { const i = e.highlight; let o; try { o = aK.lex(t, e); } catch (t) { return n(t); } const r = function (t) { let r; if (!t) { try { if (e.walkTokens) { hK.walkTokens(o, e.walkTokens); } r = uK.parse(o, e); } catch (e) { t = e; } } e.highlight = i; return t ? n(t) : n(null, r); }; if (!i || i.length < 3) { return r(); } delete e.highlight; if (!o.length) return r(); let s = 0; hK.walkTokens(o, function (t) { if (t.type === "code") { s++; setTimeout(() => { i(t.text, t.lang, function (e, n) { if (e) { return r(e); } if (n != null && n !== t.text) { t.text = n; t.escaped = true; } s--; if (s === 0) { r(); } }); }, 0); } }); if (s === 0) { r(); } return; } try { const n = aK.lex(t, e); if (e.walkTokens) { hK.walkTokens(n, e.walkTokens); } return uK.parse(n, e); } catch (t) { t.message += "\nPlease report this to https://github.com/markedjs/marked."; if (e.silent) { return ( "

    An error occurred:

    " +
                  NG(t.message + "", true) +
                  "
    " ); } throw t; } } hK.options = hK.setOptions = function (t) { KG(hK.defaults, t); DG(hK.defaults); return hK; }; hK.getDefaults = xG; hK.defaults = EG; hK.use = function (...t) { const e = KG({}, ...t); const n = hK.defaults.extensions || { renderers: {}, childTokens: {} }; let i; t.forEach((t) => { if (t.extensions) { i = true; t.extensions.forEach((t) => { if (!t.name) { throw new Error("extension name required"); } if (t.renderer) { const e = n.renderers ? n.renderers[t.name] : null; if (e) { n.renderers[t.name] = function (...n) { let i = t.renderer.apply(this, n); if (i === false) { i = e.apply(this, n); } return i; }; } else { n.renderers[t.name] = t.renderer; } } if (t.tokenizer) { if (!t.level || (t.level !== "block" && t.level !== "inline")) { throw new Error( "extension level must be 'block' or 'inline'" ); } if (n[t.level]) { n[t.level].unshift(t.tokenizer); } else { n[t.level] = [t.tokenizer]; } if (t.start) { if (t.level === "block") { if (n.startBlock) { n.startBlock.push(t.start); } else { n.startBlock = [t.start]; } } else if (t.level === "inline") { if (n.startInline) { n.startInline.push(t.start); } else { n.startInline = [t.start]; } } } } if (t.childTokens) { n.childTokens[t.name] = t.childTokens; } }); } if (t.renderer) { const n = hK.defaults.renderer || new cK(); for (const e in t.renderer) { const i = n[e]; n[e] = (...o) => { let r = t.renderer[e].apply(n, o); if (r === false) { r = i.apply(n, o); } return r; }; } e.renderer = n; } if (t.tokenizer) { const n = hK.defaults.tokenizer || new nK(); for (const e in t.tokenizer) { const i = n[e]; n[e] = (...o) => { let r = t.tokenizer[e].apply(n, o); if (r === false) { r = i.apply(n, o); } return r; }; } e.tokenizer = n; } if (t.walkTokens) { const n = hK.defaults.walkTokens; e.walkTokens = function (e) { t.walkTokens.call(this, e); if (n) { n.call(this, e); } }; } if (i) { e.extensions = n; } hK.setOptions(e); }); }; hK.walkTokens = function (t, e) { for (const n of t) { e.call(hK, n); switch (n.type) { case "table": { for (const t of n.header) { hK.walkTokens(t.tokens, e); } for (const t of n.rows) { for (const n of t) { hK.walkTokens(n.tokens, e); } } break; } case "list": { hK.walkTokens(n.items, e); break; } default: { if ( hK.defaults.extensions && hK.defaults.extensions.childTokens && hK.defaults.extensions.childTokens[n.type] ) { hK.defaults.extensions.childTokens[n.type].forEach(function ( t ) { hK.walkTokens(n[t], e); }); } else if (n.tokens) { hK.walkTokens(n.tokens, e); } } } } }; hK.parseInline = function (t, e) { if (typeof t === "undefined" || t === null) { throw new Error( "marked.parseInline(): input parameter is undefined or null" ); } if (typeof t !== "string") { throw new Error( "marked.parseInline(): input parameter is of type " + Object.prototype.toString.call(t) + ", string expected" ); } e = KG({}, hK.defaults, e || {}); JG(e); try { const n = aK.lexInline(t, e); if (e.walkTokens) { hK.walkTokens(n, e.walkTokens); } return uK.parseInline(n, e); } catch (t) { t.message += "\nPlease report this to https://github.com/markedjs/marked."; if (e.silent) { return ( "

    An error occurred:

    " +
                  NG(t.message + "", true) +
                  "
    " ); } throw t; } }; hK.Parser = uK; hK.parser = uK.parse; hK.Renderer = cK; hK.TextRenderer = lK; hK.Lexer = aK; hK.lexer = aK.lex; hK.Tokenizer = nK; hK.Slugger = dK; hK.parse = hK; const mK = hK.options; const gK = hK.setOptions; const fK = hK.use; const pK = hK.walkTokens; const kK = hK.parseInline; const bK = null && hK; const wK = uK.parse; const AK = aK.lex; hK.use({ tokenizer: { autolink: () => null, url: () => null }, renderer: { checkbox(...t) { return Object.getPrototypeOf(this) .checkbox.call(this, ...t) .trimRight(); }, code(...t) { return Object.getPrototypeOf(this) .code.call(this, ...t) .replace("\n", ""); }, }, }); function _K(t) { const e = { gfm: true, breaks: true, tables: true, xhtml: true, headerIds: false, }; return hK.parse(t, e); } function CK(t) { for (var e = 1; e < arguments.length; e++) { var n = arguments[e]; for (var i in n) { if (n.hasOwnProperty(i)) t[i] = n[i]; } } return t; } function vK(t, e) { return Array(e + 1).join(t); } var yK = [ "address", "article", "aside", "audio", "blockquote", "body", "canvas", "center", "dd", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "hr", "html", "isindex", "li", "main", "menu", "nav", "noframes", "noscript", "ol", "output", "p", "pre", "section", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "ul", ]; function xK(t) { return yK.indexOf(t.nodeName.toLowerCase()) !== -1; } var EK = [ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr", ]; function DK(t) { return EK.indexOf(t.nodeName.toLowerCase()) !== -1; } var SK = EK.join(); function TK(t) { return t.querySelector && t.querySelector(SK); } var BK = {}; BK.paragraph = { filter: "p", replacement: function (t) { return "\n\n" + t + "\n\n"; }, }; BK.lineBreak = { filter: "br", replacement: function (t, e, n) { return n.br + "\n"; }, }; BK.heading = { filter: ["h1", "h2", "h3", "h4", "h5", "h6"], replacement: function (t, e, n) { var i = Number(e.nodeName.charAt(1)); if (n.headingStyle === "setext" && i < 3) { var o = vK(i === 1 ? "=" : "-", t.length); return "\n\n" + t + "\n" + o + "\n\n"; } else { return "\n\n" + vK("#", i) + " " + t + "\n\n"; } }, }; BK.blockquote = { filter: "blockquote", replacement: function (t) { t = t.replace(/^\n+|\n+$/g, ""); t = t.replace(/^/gm, "> "); return "\n\n" + t + "\n\n"; }, }; BK.list = { filter: ["ul", "ol"], replacement: function (t, e) { var n = e.parentNode; if (n.nodeName === "LI" && n.lastElementChild === e) { return "\n" + t; } else { return "\n\n" + t + "\n\n"; } }, }; BK.listItem = { filter: "li", replacement: function (t, e, n) { t = t .replace(/^\n+/, "") .replace(/\n+$/, "\n") .replace(/\n/gm, "\n "); var i = n.bulletListMarker + " "; var o = e.parentNode; if (o.nodeName === "OL") { var r = o.getAttribute("start"); var s = Array.prototype.indexOf.call(o.children, e); i = (r ? Number(r) + s : s + 1) + ". "; } return i + t + (e.nextSibling && !/\n$/.test(t) ? "\n" : ""); }, }; BK.indentedCodeBlock = { filter: function (t, e) { return ( e.codeBlockStyle === "indented" && t.nodeName === "PRE" && t.firstChild && t.firstChild.nodeName === "CODE" ); }, replacement: function (t, e, n) { return ( "\n\n " + e.firstChild.textContent.replace(/\n/g, "\n ") + "\n\n" ); }, }; BK.fencedCodeBlock = { filter: function (t, e) { return ( e.codeBlockStyle === "fenced" && t.nodeName === "PRE" && t.firstChild && t.firstChild.nodeName === "CODE" ); }, replacement: function (t, e, n) { var i = e.firstChild.className || ""; var o = (i.match(/language-(\S+)/) || [null, ""])[1]; var r = e.firstChild.textContent; var s = n.fence.charAt(0); var a = 3; var c = new RegExp("^" + s + "{3,}", "gm"); var l; while ((l = c.exec(r))) { if (l[0].length >= a) { a = l[0].length + 1; } } var d = vK(s, a); return ( "\n\n" + d + o + "\n" + r.replace(/\n$/, "") + "\n" + d + "\n\n" ); }, }; BK.horizontalRule = { filter: "hr", replacement: function (t, e, n) { return "\n\n" + n.hr + "\n\n"; }, }; BK.inlineLink = { filter: function (t, e) { return ( e.linkStyle === "inlined" && t.nodeName === "A" && t.getAttribute("href") ); }, replacement: function (t, e) { var n = e.getAttribute("href"); var i = e.title ? ' "' + e.title + '"' : ""; return "[" + t + "](" + n + i + ")"; }, }; BK.referenceLink = { filter: function (t, e) { return ( e.linkStyle === "referenced" && t.nodeName === "A" && t.getAttribute("href") ); }, replacement: function (t, e, n) { var i = e.getAttribute("href"); var o = e.title ? ' "' + e.title + '"' : ""; var r; var s; switch (n.linkReferenceStyle) { case "collapsed": r = "[" + t + "][]"; s = "[" + t + "]: " + i + o; break; case "shortcut": r = "[" + t + "]"; s = "[" + t + "]: " + i + o; break; default: var a = this.references.length + 1; r = "[" + t + "][" + a + "]"; s = "[" + a + "]: " + i + o; } this.references.push(s); return r; }, references: [], append: function (t) { var e = ""; if (this.references.length) { e = "\n\n" + this.references.join("\n") + "\n\n"; this.references = []; } return e; }, }; BK.emphasis = { filter: ["em", "i"], replacement: function (t, e, n) { if (!t.trim()) return ""; return n.emDelimiter + t + n.emDelimiter; }, }; BK.strong = { filter: ["strong", "b"], replacement: function (t, e, n) { if (!t.trim()) return ""; return n.strongDelimiter + t + n.strongDelimiter; }, }; BK.code = { filter: function (t) { var e = t.previousSibling || t.nextSibling; var n = t.parentNode.nodeName === "PRE" && !e; return t.nodeName === "CODE" && !n; }, replacement: function (t) { if (!t.trim()) return ""; var e = "`"; var n = ""; var i = ""; var o = t.match(/`+/gm); if (o) { if (/^`/.test(t)) n = " "; if (/`$/.test(t)) i = " "; while (o.indexOf(e) !== -1) e = e + "`"; } return e + n + t + i + e; }, }; BK.image = { filter: "img", replacement: function (t, e) { var n = e.alt || ""; var i = e.getAttribute("src") || ""; var o = e.title || ""; var r = o ? ' "' + o + '"' : ""; return i ? "![" + n + "]" + "(" + i + r + ")" : ""; }, }; function MK(t) { this.options = t; this._keep = []; this._remove = []; this.blankRule = { replacement: t.blankReplacement }; this.keepReplacement = t.keepReplacement; this.defaultRule = { replacement: t.defaultReplacement }; this.array = []; for (var e in t.rules) this.array.push(t.rules[e]); } MK.prototype = { add: function (t, e) { this.array.unshift(e); }, keep: function (t) { this._keep.unshift({ filter: t, replacement: this.keepReplacement }); }, remove: function (t) { this._remove.unshift({ filter: t, replacement: function () { return ""; }, }); }, forNode: function (t) { if (t.isBlank) return this.blankRule; var e; if ((e = IK(this.array, t, this.options))) return e; if ((e = IK(this._keep, t, this.options))) return e; if ((e = IK(this._remove, t, this.options))) return e; return this.defaultRule; }, forEach: function (t) { for (var e = 0; e < this.array.length; e++) t(this.array[e], e); }, }; function IK(t, e, n) { for (var i = 0; i < t.length; i++) { var o = t[i]; if (LK(o, e, n)) return o; } return void 0; } function LK(t, e, n) { var i = t.filter; if (typeof i === "string") { if (i === e.nodeName.toLowerCase()) return true; } else if (Array.isArray(i)) { if (i.indexOf(e.nodeName.toLowerCase()) > -1) return true; } else if (typeof i === "function") { if (i.call(t, e, n)) return true; } else { throw new TypeError( "`filter` needs to be a string, array, or function" ); } } function NK(t) { var e = t.element; var n = t.isBlock; var i = t.isVoid; var o = t.isPre || function (t) { return t.nodeName === "PRE"; }; if (!e.firstChild || o(e)) return; var r = null; var s = false; var a = null; var c = PK(a, e, o); while (c !== e) { if (c.nodeType === 3 || c.nodeType === 4) { var l = c.data.replace(/[ \r\n\t]+/g, " "); if ((!r || / $/.test(r.data)) && !s && l[0] === " ") { l = l.substr(1); } if (!l) { c = zK(c); continue; } c.data = l; r = c; } else if (c.nodeType === 1) { if (n(c) || c.nodeName === "BR") { if (r) { r.data = r.data.replace(/ $/, ""); } r = null; s = false; } else if (i(c)) { r = null; s = true; } } else { c = zK(c); continue; } var d = PK(a, c, o); a = c; c = d; } if (r) { r.data = r.data.replace(/ $/, ""); if (!r.data) { zK(r); } } } function zK(t) { var e = t.nextSibling || t.parentNode; t.parentNode.removeChild(t); return e; } function PK(t, e, n) { if ((t && t.parentNode === e) || n(e)) { return e.nextSibling || e.parentNode; } return e.firstChild || e.nextSibling || e.parentNode; } var RK = typeof window !== "undefined" ? window : {}; function VK() { var t = RK.DOMParser; var e = false; try { if (new t().parseFromString("", "text/html")) { e = true; } } catch (t) {} return e; } function OK() { var t = function () {}; { if (FK()) { t.prototype.parseFromString = function (t) { var e = new window.ActiveXObject("htmlfile"); e.designMode = "on"; e.open(); e.write(t); e.close(); return e; }; } else { t.prototype.parseFromString = function (t) { var e = document.implementation.createHTMLDocument(""); e.open(); e.write(t); e.close(); return e; }; } } return t; } function FK() { var t = false; try { document.implementation.createHTMLDocument("").open(); } catch (e) { if (window.ActiveXObject) t = true; } return t; } var jK = VK() ? RK.DOMParser : OK(); function HK(t) { var e; if (typeof t === "string") { var n = $K().parseFromString( '' + t + "", "text/html" ); e = n.getElementById("turndown-root"); } else { e = t.cloneNode(true); } NK({ element: e, isBlock: xK, isVoid: DK }); return e; } var UK; function $K() { UK = UK || new jK(); return UK; } function qK(t) { t.isBlock = xK(t); t.isCode = t.nodeName.toLowerCase() === "code" || t.parentNode.isCode; t.isBlank = WK(t); t.flankingWhitespace = GK(t); return t; } function WK(t) { return ( ["A", "TH", "TD", "IFRAME", "SCRIPT", "AUDIO", "VIDEO"].indexOf( t.nodeName ) === -1 && /^\s*$/i.test(t.textContent) && !DK(t) && !TK(t) ); } function GK(t) { var e = ""; var n = ""; if (!t.isBlock) { var i = /^\s/.test(t.textContent); var o = /\s$/.test(t.textContent); var r = t.isBlank && i && o; if (i && !KK("left", t)) { e = " "; } if (!r && o && !KK("right", t)) { n = " "; } } return { leading: e, trailing: n }; } function KK(t, e) { var n; var i; var o; if (t === "left") { n = e.previousSibling; i = / $/; } else { n = e.nextSibling; i = /^ /; } if (n) { if (n.nodeType === 3) { o = i.test(n.nodeValue); } else if (n.nodeType === 1 && !xK(n)) { o = i.test(n.textContent); } } return o; } var YK = Array.prototype.reduce; var QK = /^\n*/; var ZK = /\n*$/; var JK = [ [/\\/g, "\\\\"], [/\*/g, "\\*"], [/^-/g, "\\-"], [/^\+ /g, "\\+ "], [/^(=+)/g, "\\$1"], [/^(#{1,6}) /g, "\\$1 "], [/`/g, "\\`"], [/^~~~/g, "\\~~~"], [/\[/g, "\\["], [/\]/g, "\\]"], [/^>/g, "\\>"], [/_/g, "\\_"], [/^(\d+)\. /g, "$1\\. "], ]; function XK(t) { if (!(this instanceof XK)) return new XK(t); var e = { rules: BK, headingStyle: "setext", hr: "* * *", bulletListMarker: "*", codeBlockStyle: "indented", fence: "```", emDelimiter: "_", strongDelimiter: "**", linkStyle: "inlined", linkReferenceStyle: "full", br: " ", blankReplacement: function (t, e) { return e.isBlock ? "\n\n" : ""; }, keepReplacement: function (t, e) { return e.isBlock ? "\n\n" + e.outerHTML + "\n\n" : e.outerHTML; }, defaultReplacement: function (t, e) { return e.isBlock ? "\n\n" + t + "\n\n" : t; }, }; this.options = CK({}, e, t); this.rules = new MK(this.options); } XK.prototype = { turndown: function (t) { if (!rY(t)) { throw new TypeError( t + " is not a string, or an element/document/fragment node." ); } if (t === "") return ""; var e = tY.call(this, new HK(t)); return eY.call(this, e); }, use: function (t) { if (Array.isArray(t)) { for (var e = 0; e < t.length; e++) this.use(t[e]); } else if (typeof t === "function") { t(this); } else { throw new TypeError( "plugin must be a Function or an Array of Functions" ); } return this; }, addRule: function (t, e) { this.rules.add(t, e); return this; }, keep: function (t) { this.rules.keep(t); return this; }, remove: function (t) { this.rules.remove(t); return this; }, escape: function (t) { return JK.reduce(function (t, e) { return t.replace(e[0], e[1]); }, t); }, }; function tY(t) { var e = this; return YK.call( t.childNodes, function (t, n) { n = new qK(n); var i = ""; if (n.nodeType === 3) { i = n.isCode ? n.nodeValue : e.escape(n.nodeValue); } else if (n.nodeType === 1) { i = nY.call(e, n); } return oY(t, i); }, "" ); } function eY(t) { var e = this; this.rules.forEach(function (n) { if (typeof n.append === "function") { t = oY(t, n.append(e.options)); } }); return t.replace(/^[\t\r\n]+/, "").replace(/[\t\r\n\s]+$/, ""); } function nY(t) { var e = this.rules.forNode(t); var n = tY.call(this, t); var i = t.flankingWhitespace; if (i.leading || i.trailing) n = n.trim(); return i.leading + e.replacement(n, t, this.options) + i.trailing; } function iY(t, e) { var n = [t.match(ZK)[0], e.match(QK)[0]].sort(); var i = n[n.length - 1]; return i.length < 2 ? i : "\n\n"; } function oY(t, e) { var n = iY(t, e); t = t.replace(ZK, ""); e = e.replace(QK, ""); return t + n + e; } function rY(t) { return ( t != null && (typeof t === "string" || (t.nodeType && (t.nodeType === 1 || t.nodeType === 9 || t.nodeType === 11))) ); } const sY = XK; var aY = /highlight-(?:text|source)-([a-z0-9]+)/; function cY(t) { t.addRule("highlightedCodeBlock", { filter: function (t) { var e = t.firstChild; return ( t.nodeName === "DIV" && aY.test(t.className) && e && e.nodeName === "PRE" ); }, replacement: function (t, e, n) { var i = e.className || ""; var o = (i.match(aY) || [null, ""])[1]; return ( "\n\n" + n.fence + o + "\n" + e.firstChild.textContent + "\n" + n.fence + "\n\n" ); }, }); } function lY(t) { t.addRule("strikethrough", { filter: ["del", "s", "strike"], replacement: function (t) { return "~" + t + "~"; }, }); } var dY = Array.prototype.indexOf; var uY = Array.prototype.every; var hY = {}; hY.tableCell = { filter: ["th", "td"], replacement: function (t, e) { return fY(t, e); }, }; hY.tableRow = { filter: "tr", replacement: function (t, e) { var n = ""; var i = { left: ":--", right: "--:", center: ":-:" }; if (mY(e)) { for (var o = 0; o < e.childNodes.length; o++) { var r = "---"; var s = ( e.childNodes[o].getAttribute("align") || "" ).toLowerCase(); if (s) r = i[s] || r; n += fY(r, e.childNodes[o]); } } return "\n" + t + (n ? "\n" + n : ""); }, }; hY.table = { filter: function (t) { return t.nodeName === "TABLE" && mY(t.rows[0]); }, replacement: function (t) { t = t.replace("\n\n", "\n"); return "\n\n" + t + "\n\n"; }, }; hY.tableSection = { filter: ["thead", "tbody", "tfoot"], replacement: function (t) { return t; }, }; function mY(t) { var e = t.parentNode; return ( e.nodeName === "THEAD" || (e.firstChild === t && (e.nodeName === "TABLE" || gY(e)) && uY.call(t.childNodes, function (t) { return t.nodeName === "TH"; })) ); } function gY(t) { var e = t.previousSibling; return ( t.nodeName === "TBODY" && (!e || (e.nodeName === "THEAD" && /^\s*$/i.test(e.textContent))) ); } function fY(t, e) { var n = dY.call(e.parentNode.childNodes, e); var i = " "; if (n === 0) i = "| "; return i + t + " |"; } function pY(t) { t.keep(function (t) { return t.nodeName === "TABLE" && !mY(t.rows[0]); }); for (var e in hY) t.addRule(e, hY[e]); } function kY(t) { t.addRule("taskListItems", { filter: function (t) { return t.type === "checkbox" && t.parentNode.nodeName === "LI"; }, replacement: function (t, e) { return (e.checked ? "[x]" : "[ ]") + " "; }, }); } function bY(t) { t.use([cY, lY, pY, kY]); } const wY = sY.prototype.escape; function AY(t) { t = wY(t); t = t.replace(/ n) { e += AY(t.substring(n, o)); } const r = i[0]; e += r; n = o + r.length; } if (n < t.length) { e += AY(t.substring(n, t.length)); } return e; }; const _Y = new sY({ codeBlockStyle: "fenced", hr: "---", headingStyle: "atx", }); _Y.use([bY, vY]); function CY(t) { return _Y.turndown(t); } function vY(t) { t.addRule("taskListItems", { filter(t) { return ( t.type === "checkbox" && (t.parentNode.nodeName === "LI" || t.parentNode.parentNode.nodeName === "LI") ); }, replacement(t, e) { return (e.checked ? "[x]" : "[ ]") + " "; }, }); } const yY = new RegExp( /\b(?:(?:https?|ftp):\/\/|www\.)/.source + /(?![-_])(?:[-_a-z0-9\u00a1-\uffff]{1,63}\.)+(?:[a-z\u00a1-\uffff]{2,63})/ .source + /(?:[^\s<>]*)/.source, "gi" ); function* xY(t) { for (const e of t.matchAll(yY)) { const t = e[0]; const n = EY(t); yield Object.assign([t.substring(0, n)], { index: e.index }); } } function EY(t) { let e = t.length; while (e > 0) { const n = t[e - 1]; if ("?!.,:*_~'\"".includes(n)) { e--; } else if (n == ")") { let n = 0; for (let i = 0; i < e; i++) { if (t[i] == "(") { n++; } else if (t[i] == ")") { n--; } } if (n < 0) { e--; } else { break; } } else { break; } } return e; } class DY { constructor(t) { this._htmlDP = new Xb(t); } keepHtml(t) { _Y.keep([t]); } toView(t) { const e = _K(t); return this._htmlDP.toView(e); } toData(t) { const e = this._htmlDP.toData(t); return CY(e); } registerRawContentMatcher(t) { this._htmlDP.registerRawContentMatcher(t); } useFillerType() {} } class SY extends au { constructor(t) { super(t); t.data.processor = new DY(t.data.viewDocument); } static get pluginName() { return "Markdown"; } } const TY = ["SPAN", "BR", "PRE", "CODE"]; class BY extends au { constructor(t) { super(t); this._gfmDataProcessor = new DY(t.data.viewDocument); } static get pluginName() { return "PasteFromMarkdownExperimental"; } static get requires() { return [iz]; } init() { const t = this.editor; const e = t.editing.view; const n = e.document; const i = t.plugins.get("ClipboardPipeline"); let o = false; this.listenTo(n, "keydown", (t, e) => { o = e.shiftKey; }); this.listenTo(i, "inputTransformation", (t, e) => { if (o) { return; } const n = e.dataTransfer.getData("text/html"); if (!n) { const t = e.dataTransfer.getData("text/plain"); e.content = this._gfmDataProcessor.toView(t); return; } const i = this._parseMarkdownFromHtml(n); if (i) { e.content = this._gfmDataProcessor.toView(i); } }); } _parseMarkdownFromHtml(t) { const e = this._removeOsSpecificTags(t); if (!this._containsOnlyAllowedFirstLevelTags(e)) { return null; } const n = this._removeFirstLevelWrapperTagsAndBrs(e); if (this._containsAnyRemainingHtmlTags(n)) { return null; } return this._replaceHtmlReservedEntitiesWithCharacters(n); } _removeOsSpecificTags(t) { const e = t.replace(/^]*>/, "").trim(); const n = e .replace(/^/, "") .replace(/<\/html>$/, "") .trim(); const i = n .replace(/^/, "") .replace(/<\/body>$/, "") .trim(); return i .replace(/^/, "") .replace(/$/, "") .trim(); } _containsOnlyAllowedFirstLevelTags(t) { const e = new DOMParser(); const { body: n } = e.parseFromString(t, "text/html"); const i = Array.from(n.children).map((t) => t.tagName); return i.every((t) => TY.includes(t)); } _removeFirstLevelWrapperTagsAndBrs(t) { const e = new DOMParser(); const { body: n } = e.parseFromString(t, "text/html"); const i = n.querySelectorAll("br"); for (const t of i) { t.replaceWith("\n"); } const o = n.querySelectorAll(":scope > *"); for (const t of o) { const e = t.cloneNode(true); t.replaceWith(...e.childNodes); } return n.innerHTML; } _containsAnyRemainingHtmlTags(t) { return t.includes("<"); } _replaceHtmlReservedEntitiesWithCharacters(t) { return t .replace(/>/g, ">") .replace(/</g, "<") .replace(/ /g, " "); } } function MY(t, e) { const n = (n, i, o) => { if (!o.consumable.consume(i.item, n.name)) { return; } const r = i.attributeNewValue; const s = o.writer; const a = o.mapper.toViewElement(i.item); const c = [...a.getChildren()].find((t) => t.getCustomProperty("media-content") ); s.remove(c); const l = t.getMediaViewElement(s, r, e); s.insert(s.createPositionAt(a, 0), l); }; return (t) => { t.on("attribute:url:media", n); }; } function IY(t, e, n) { e.setCustomProperty("media", true, t); return hz(t, e, { label: n }); } function LY(t) { const e = t.getSelectedElement(); if (e && NY(e)) { return e; } return null; } function NY(t) { return !!t.getCustomProperty("media") && uz(t); } function zY(t, e, n, i) { return t.createContainerElement("figure", { class: "media" }, [ e.getMediaViewElement(t, n, i), t.createSlot(), ]); } function PY(t) { const e = t.getSelectedElement(); if (e && e.is("element", "media")) { return e; } return null; } function RY(t, e, n, i) { t.change((o) => { const r = o.createElement("media", { url: e }); t.insertObject(r, n, null, { setSelection: "on", findOptimalPosition: i ? "auto" : undefined, }); }); } class VY extends lu { refresh() { const t = this.editor.model; const e = t.document.selection; const n = PY(e); this.value = n ? n.getAttribute("url") : undefined; this.isEnabled = FY(e) || OY(e, t); } execute(t) { const e = this.editor.model; const n = e.document.selection; const i = PY(n); if (i) { e.change((e) => { e.setAttribute("url", t, i); }); } else { RY(e, t, n, true); } } } function OY(t, e) { const n = wz(t, e); let i = n.start.parent; if (i.isEmpty && !e.schema.isLimit(i)) { i = i.parent; } return e.schema.checkChild(i, "media"); } function FY(t) { const e = t.getSelectedElement(); return !!e && e.name === "media"; } const jY = ''; const HY = "0 0 64 42"; class UY { constructor(t, e) { const n = e.providers; const i = e.extraProviders || []; const o = new Set(e.removeProviders); const r = n.concat(i).filter((t) => { const e = t.name; if (!e) { z("media-embed-no-provider-name", { provider: t }); return false; } return !o.has(e); }); this.locale = t; this.providerDefinitions = r; } hasMedia(t) { return !!this._getMedia(t); } getMediaViewElement(t, e, n) { return this._getMedia(e).getViewElement(t, n); } _getMedia(t) { if (!t) { return new $Y(this.locale); } t = t.trim(); for (const e of this.providerDefinitions) { const n = e.html; const i = rl(e.url); for (const e of i) { const i = this._getUrlMatches(t, e); if (i) { return new $Y(this.locale, t, i, n); } } } return null; } _getUrlMatches(t, e) { let n = t.match(e); if (n) { return n; } let i = t.replace(/^https?:\/\//, ""); n = i.match(e); if (n) { return n; } i = i.replace(/^www\./, ""); n = i.match(e); if (n) { return n; } return null; } } class $Y { constructor(t, e, n, i) { this.url = this._getValidUrl(e); this._locale = t; this._match = n; this._previewRenderer = i; } getViewElement(t, e) { const n = {}; let i; if ( e.renderForEditingView || (e.renderMediaPreview && this.url && this._previewRenderer) ) { if (this.url) { n["data-oembed-url"] = this.url; } if (e.renderForEditingView) { n.class = "ck-media__wrapper"; } const o = this._getPreviewHtml(e); i = t.createRawElement("div", n, (t, e) => { e.setContentOf(t, o); }); } else { if (this.url) { n.url = this.url; } i = t.createEmptyElement(e.elementName, n); } t.setCustomProperty("media-content", true, i); return i; } _getPreviewHtml(t) { if (this._previewRenderer) { return this._previewRenderer(this._match); } else { if (this.url && t.renderForEditingView) { return this._getPlaceholderHtml(); } return ""; } } _getPlaceholderHtml() { const t = new Zv(); const e = this._locale.t; t.content = jY; t.viewBox = HY; const n = new vd({ tag: "div", attributes: { class: "ck ck-reset_all ck-media__placeholder" }, children: [ { tag: "div", attributes: { class: "ck-media__placeholder__icon" }, children: [t], }, { tag: "a", attributes: { class: "ck-media__placeholder__url", target: "_blank", rel: "noopener noreferrer", href: this.url, "data-cke-tooltip-text": e("Open media in new tab"), }, children: [ { tag: "span", attributes: { class: "ck-media__placeholder__url__text" }, children: [this.url], }, ], }, ], }).render(); return n.outerHTML; } _getValidUrl(t) { if (!t) { return null; } if (t.match(/^https?/)) { return t; } return "https://" + t; } } var qY = n(8074); var WY = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; WY.insert = "head"; WY.singleton = true; var GY = Zd()(qY.A, WY); const KY = qY.A.locals || {}; class YY extends au { static get pluginName() { return "MediaEmbedEditing"; } constructor(t) { super(t); t.config.define("mediaEmbed", { elementName: "oembed", providers: [ { name: "dailymotion", url: [/^dailymotion\.com\/video\/(\w+)/, /^dai.ly\/(\w+)/], html: (t) => { const e = t[1]; return ( '
    ' + `" + "
    " ); }, }, { name: "spotify", url: [ /^open\.spotify\.com\/(artist\/\w+)/, /^open\.spotify\.com\/(album\/\w+)/, /^open\.spotify\.com\/(track\/\w+)/, ], html: (t) => { const e = t[1]; return ( '
    ' + `" + "
    " ); }, }, { name: "youtube", url: [ /^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/, /^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/, /^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/, /^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/, ], html: (t) => { const e = t[1]; const n = t[2]; return ( '
    ' + `" + "
    " ); }, }, { name: "vimeo", url: [ /^vimeo\.com\/(\d+)/, /^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/album\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/channels\/[^/]+\/(\d+)/, /^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/, /^vimeo\.com\/ondemand\/[^/]+\/(\d+)/, /^player\.vimeo\.com\/video\/(\d+)/, ], html: (t) => { const e = t[1]; return ( '
    ' + `" + "
    " ); }, }, { name: "instagram", url: /^instagram\.com\/p\/(\w+)/ }, { name: "twitter", url: /^twitter\.com/ }, { name: "googleMaps", url: [ /^google\.com\/maps/, /^goo\.gl\/maps/, /^maps\.google\.com/, /^maps\.app\.goo\.gl/, ], }, { name: "flickr", url: /^flickr\.com/ }, { name: "facebook", url: /^facebook\.com/ }, ], }); this.registry = new UY(t.locale, t.config.get("mediaEmbed")); } init() { const t = this.editor; const e = t.model.schema; const n = t.t; const i = t.conversion; const o = t.config.get("mediaEmbed.previewsInData"); const r = t.config.get("mediaEmbed.elementName"); const s = this.registry; t.commands.add("mediaEmbed", new VY(t)); e.register("media", { inheritAllFrom: "$blockObject", allowAttributes: ["url"], }); i.for("dataDowncast").elementToStructure({ model: "media", view: (t, { writer: e }) => { const n = t.getAttribute("url"); return zY(e, s, n, { elementName: r, renderMediaPreview: !!n && o, }); }, }); i.for("dataDowncast").add( MY(s, { elementName: r, renderMediaPreview: o }) ); i.for("editingDowncast").elementToStructure({ model: "media", view: (t, { writer: e }) => { const i = t.getAttribute("url"); const o = zY(e, s, i, { elementName: r, renderForEditingView: true, }); return IY(o, e, n("media widget")); }, }); i.for("editingDowncast").add( MY(s, { elementName: r, renderForEditingView: true }) ); i.for("upcast") .elementToElement({ view: (t) => ["oembed", r].includes(t.name) && t.getAttribute("url") ? { name: true } : null, model: (t, { writer: e }) => { const n = t.getAttribute("url"); if (s.hasMedia(n)) { return e.createElement("media", { url: n }); } return null; }, }) .elementToElement({ view: { name: "div", attributes: { "data-oembed-url": true } }, model: (t, { writer: e }) => { const n = t.getAttribute("data-oembed-url"); if (s.hasMedia(n)) { return e.createElement("media", { url: n }); } return null; }, }) .add((t) => { const e = (t, e, n) => { if ( !n.consumable.consume(e.viewItem, { name: true, classes: "media", }) ) { return; } const { modelRange: i, modelCursor: o } = n.convertChildren( e.viewItem, e.modelCursor ); e.modelRange = i; e.modelCursor = o; const r = id(i.getItems()); if (!r) { n.consumable.revert(e.viewItem, { name: true, classes: "media", }); } }; t.on("element:figure", e); }); } } const QY = /^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/; class ZY extends au { static get requires() { return [$P, zI, rR]; } static get pluginName() { return "AutoMediaEmbed"; } constructor(t) { super(t); this._timeoutId = null; this._positionToInsert = null; } init() { const t = this.editor; const n = t.model.document; const i = t.plugins.get("ClipboardPipeline"); this.listenTo(i, "inputTransformation", () => { const t = n.selection.getFirstRange(); const e = jw.fromPosition(t.start); e.stickiness = "toPrevious"; const i = jw.fromPosition(t.end); i.stickiness = "toNext"; n.once( "change:data", () => { this._embedMediaBetweenPositions(e, i); e.detach(); i.detach(); }, { priority: "high" } ); }); const o = t.commands.get("undo"); o.on( "execute", () => { if (this._timeoutId) { e.window.clearTimeout(this._timeoutId); this._positionToInsert.detach(); this._timeoutId = null; this._positionToInsert = null; } }, { priority: "high" } ); } _embedMediaBetweenPositions(t, n) { const i = this.editor; const o = i.plugins.get(YY).registry; const r = new Wp(t, n); const s = r.getWalker({ ignoreElementEnd: true }); let a = ""; for (const t of s) { if (t.item.is("$textProxy")) { a += t.item.data; } } a = a.trim(); if (!a.match(QY)) { r.detach(); return; } if (!o.hasMedia(a)) { r.detach(); return; } const c = i.commands.get("mediaEmbed"); if (!c.isEnabled) { r.detach(); return; } this._positionToInsert = jw.fromPosition(t); this._timeoutId = e.window.setTimeout(() => { i.model.change((t) => { this._timeoutId = null; t.remove(r); r.detach(); let e = null; if (this._positionToInsert.root.rootName !== "$graveyard") { e = this._positionToInsert; } RY(i.model, a, e, false); this._positionToInsert.detach(); this._positionToInsert = null; }); i.plugins.get(zI).requestUndoOnBackspace(); }, 100); } } var JY = n(7269); var XY = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; XY.insert = "head"; XY.singleton = true; var tQ = Zd()(JY.A, XY); const eQ = JY.A.locals || {}; class nQ extends nu { constructor(t, e) { super(e); const n = e.t; this.focusTracker = new od(); this.keystrokes = new rd(); this.set("mediaURLInputValue", ""); this.urlInputView = this._createUrlInput(); this.saveButtonView = this._createButton( n("Save"), Bv.check, "ck-button-save" ); this.saveButtonView.type = "submit"; this.cancelButtonView = this._createButton( n("Cancel"), Bv.cancel, "ck-button-cancel", "cancel" ); this._focusables = new Ad(); this._focusCycler = new mx({ focusables: this._focusables, focusTracker: this.focusTracker, keystrokeHandler: this.keystrokes, actions: { focusPrevious: "shift + tab", focusNext: "tab" }, }); this._validators = t; this.setTemplate({ tag: "form", attributes: { class: ["ck", "ck-media-form", "ck-responsive-form"], tabindex: "-1", }, children: [ this.urlInputView, this.saveButtonView, this.cancelButtonView, ], }); } render() { super.render(); ru({ view: this }); const t = [ this.urlInputView, this.saveButtonView, this.cancelButtonView, ]; t.forEach((t) => { this._focusables.add(t); this.focusTracker.add(t.element); }); this.keystrokes.listenTo(this.element); const e = (t) => t.stopPropagation(); this.keystrokes.set("arrowright", e); this.keystrokes.set("arrowleft", e); this.keystrokes.set("arrowup", e); this.keystrokes.set("arrowdown", e); } destroy() { super.destroy(); this.focusTracker.destroy(); this.keystrokes.destroy(); } focus() { this._focusCycler.focusFirst(); } get url() { return this.urlInputView.fieldView.element.value.trim(); } set url(t) { this.urlInputView.fieldView.element.value = t.trim(); } isValid() { this.resetFormStatus(); for (const t of this._validators) { const e = t(this); if (e) { this.urlInputView.errorText = e; return false; } } return true; } resetFormStatus() { this.urlInputView.errorText = null; this.urlInputView.infoText = this._urlInputViewInfoDefault; } _createUrlInput() { const t = this.locale.t; const e = new Uy(this.locale, uE); const n = e.fieldView; this._urlInputViewInfoDefault = t( "Paste the media URL in the input." ); this._urlInputViewInfoTip = t( "Tip: Paste the URL into the content to embed faster." ); e.label = t("Media URL"); e.infoText = this._urlInputViewInfoDefault; n.on("input", () => { e.infoText = n.element.value ? this._urlInputViewInfoTip : this._urlInputViewInfoDefault; this.mediaURLInputValue = n.element.value.trim(); }); return e; } _createButton(t, e, n, i) { const o = new iy(this.locale); o.set({ label: t, icon: e, tooltip: true }); o.extendTemplate({ attributes: { class: n } }); if (i) { o.delegate("execute").to(this, i); } return o; } } const iQ = ''; class oQ extends au { static get requires() { return [YY]; } static get pluginName() { return "MediaEmbedUI"; } init() { const t = this.editor; const e = t.commands.get("mediaEmbed"); t.ui.componentFactory.add("mediaEmbed", (t) => { const n = Zx(t); this._setUpDropdown(n, e); return n; }); } _setUpDropdown(t, e) { const n = this.editor; const i = n.t; const o = t.buttonView; const r = n.plugins.get(YY).registry; t.once("change:isOpen", () => { const i = new (ou(nQ))(rQ(n.t, r), n.locale); t.panelView.children.add(i); o.on( "open", () => { i.disableCssTransitions(); i.url = e.value || ""; i.urlInputView.fieldView.select(); i.enableCssTransitions(); }, { priority: "low" } ); t.on("submit", () => { if (i.isValid()) { n.execute("mediaEmbed", i.url); n.editing.view.focus(); } }); t.on("change:isOpen", () => i.resetFormStatus()); t.on("cancel", () => { n.editing.view.focus(); }); i.delegate("submit", "cancel").to(t); i.urlInputView.fieldView.bind("value").to(e, "value"); i.urlInputView.on("change:errorText", () => { n.ui.update(); }); i.urlInputView.bind("isEnabled").to(e, "isEnabled"); }); t.bind("isEnabled").to(e); o.set({ label: i("Insert media"), icon: iQ, tooltip: true }); } } function rQ(t, e) { return [ (e) => { if (!e.url.length) { return t("The URL must not be empty."); } }, (n) => { if (!e.hasMedia(n.url)) { return t("This media URL is not supported."); } }, ]; } var sQ = n(9724); var aQ = { injectType: "singletonStyleTag", attributes: { "data-cke": true }, }; aQ.insert = "head"; aQ.singleton = true; var cQ = Zd()(sQ.A, aQ); const lQ = sQ.A.locals || {}; class dQ extends au { static get requires() { return [YY, oQ, ZY, tP]; } static get pluginName() { return "MediaEmbed"; } } class uQ extends au { static get requires() { return [rP]; } static get pluginName() { return "MediaEmbedToolbar"; } afterInit() { const t = this.editor; const e = t.t; const n = t.plugins.get(rP); n.register("mediaEmbed", { ariaLabel: e("Media toolbar"), items: t.config.get("mediaEmbed.toolbar") || [], getRelatedElement: LY, }); } } class hQ extends lu { constructor(t) { super(t); this._isEnabledBasedOnSelection = false; } refresh() { const t = this.editor.model; const e = t.document; const n = id(e.selection.getSelectedBlocks()); this.value = !!n && n.is("element", "paragraph"); this.isEnabled = !!n && mQ(n, t.schema); } execute(t = {}) { const e = this.editor.model; const n = e.document; const i = t.selection || n.selection; if (!e.canEditAt(i)) { return; } e.change((t) => { const n = i.getSelectedBlocks(); for (const i of n) { if (!i.is("element", "paragraph") && mQ(i, e.schema)) { t.rename(i, "paragraph"); } } }); } } function mQ(t, e) { return e.checkChild(t.parent, "paragraph") && !e.isObject(t); } class gQ extends lu { constructor(t) { super(t); this._isEnabledBasedOnSelection = false; } execute(t) { const e = this.editor.model; const n = t.attributes; let i = t.position; if (!e.canEditAt(i)) { return; } e.change((t) => { i = this._findPositionToInsertParagraph(i, t); if (!i) { return; } const o = t.createElement("paragraph"); if (n) { e.schema.setAllowedAttributes(o, n, t); } e.insertContent(o, i); t.setSelection(o, "in"); }); } _findPositionToInsertParagraph(t, e) { const n = this.editor.model; if (n.schema.checkChild(t, "paragraph")) { return t; } const i = n.schema.findAllowedParent(t, "paragraph"); if (!i) { return null; } const o = t.parent; const r = n.schema.checkChild(o, "$text"); if (o.isEmpty || (r && t.isAtEnd)) { return n.createPositionAfter(o); } if (!o.isEmpty && r && t.isAtStart) { return n.createPositionBefore(o); } return e.split(t, i).position; } } class fQ extends au { static get pluginName() { return "Paragraph"; } init() { const t = this.editor; const e = t.model; t.commands.add("paragraph", new hQ(t)); t.commands.add("insertParagraph", new gQ(t)); e.schema.register("paragraph", { inheritAllFrom: "$block" }); t.conversion.elementToElement({ model: "paragraph", view: "p" }); t.conversion.for("upcast").elementToElement({ model: (t, { writer: e }) => { if (!fQ.paragraphLikeElements.has(t.name)) { return null; } if (t.isEmpty) { return null; } return e.createElement("paragraph"); }, view: /.+/, converterPriority: "low", }); } } fQ.paragraphLikeElements = new Set([ "blockquote", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "li", "p", "td", "th", ]); const pQ = fQ; const kQ = Bv.paragraph; class bQ extends (null && Plugin) { static get requires() { return [Paragraph]; } init() { const t = this.editor; const e = t.t; t.ui.componentFactory.add("paragraph", (n) => { const i = new ButtonView(n); const o = t.commands.get("paragraph"); i.label = e("Paragraph"); i.icon = kQ; i.tooltip = true; i.isToggleable = true; i.bind("isEnabled").to(o); i.bind("isOn").to(o, "value"); i.on("execute", () => { t.execute("paragraph"); }); return i; }); } } function wQ(t) { const e = parseFloat(t); if (t.endsWith("pt")) { return _Q((e * 96) / 72); } else if (t.endsWith("pc")) { return _Q((e * 12 * 96) / 72); } else if (t.endsWith("in")) { return _Q(e * 96); } else if (t.endsWith("cm")) { return _Q((e * 96) / 2.54); } else if (t.endsWith("mm")) { return _Q(((e / 10) * 96) / 2.54); } return t; } function AQ(t) { return t !== undefined && t.endsWith("px"); } function _Q(t) { return t.toFixed(2).replace(/\.?0+$/, "") + "px"; } function CQ(t, e, n) { if (!t.childCount) { return; } const i = new $A(t.document); const o = yQ(t, i); if (!o.length) { return; } const r = {}; const s = []; for (const t of o) { if (t.indent !== undefined) { if (!xQ(t)) { s.length = 0; } const o = `${t.id}:${t.indent}`; const a = Math.min(t.indent - 1, s.length); if (a < s.length && s[a].id !== t.id) { s.length = a; } if (a < s.length - 1) { s.length = a + 1; } else { const c = DQ(t, e); if (a > s.length - 1 || s[a].listElement.name != c.type) { if (a == 0 && c.type == "ol" && t.id !== undefined && r[o]) { c.startIndex = r[o]; } const e = MQ(c, i, n); if (AQ(t.marginLeft) && (a == 0 || AQ(s[a - 1].marginLeft))) { let n = t.marginLeft; if (a > 0) { n = _Q(parseFloat(n) - parseFloat(s[a - 1].marginLeft)); } i.setStyle("padding-left", n, e); } if (s.length == 0) { const n = t.element.parent; const o = n.getChildIndex(t.element) + 1; i.insertChild(o, e, n); } else { const t = s[a - 1].listItemElements; i.appendChild(e, t[t.length - 1]); } s[a] = { ...t, listElement: e, listItemElements: [] }; if (a == 0 && t.id !== undefined) { r[o] = c.startIndex || 1; } } } const c = t.element.name == "li" ? t.element : i.createElement("li"); i.appendChild(c, s[a].listElement); s[a].listItemElements.push(c); if (a == 0 && t.id !== undefined) { r[o]++; } if (t.element != c) { i.appendChild(t.element, c); } LQ(t.element, i); i.removeStyle("text-indent", t.element); i.removeStyle("margin-left", t.element); } else { const e = s.find((e) => e.marginLeft == t.marginLeft); if (e) { const n = e.listItemElements; i.appendChild(t.element, n[n.length - 1]); i.removeStyle("margin-left", t.element); } else { s.length = 0; } } } } function vQ(t, e) { for (const n of e.createRangeIn(t)) { const t = n.item; if (t.is("element", "li")) { const n = t.getChild(0); if (n && n.is("element", "p")) { e.unwrapElement(n); } } } } function yQ(t, e) { const n = e.createRangeIn(t); const i = []; const o = new Set(); for (const t of n.getItems()) { if (!t.is("element") || !t.name.match(/^(p|h\d+|li|div)$/)) { continue; } let e = NQ(t); if ( e !== undefined && parseFloat(e) == 0 && !Array.from(t.getClassNames()).find((t) => t.startsWith("MsoList")) ) { e = undefined; } if (t.hasStyle("mso-list") || (e !== undefined && o.has(e))) { const n = IQ(t); i.push({ element: t, id: n.id, order: n.order, indent: n.indent, marginLeft: e, }); if (e !== undefined) { o.add(e); } } else { o.clear(); } } return i; } function xQ(t) { const e = t.element.previousSibling; if (!e) { return EQ(t.element.parent); } return EQ(e); } function EQ(t) { return t.is("element", "ol") || t.is("element", "ul"); } function DQ(t, e) { const n = new RegExp( `@list l${t.id}:level${t.indent}\\s*({[^}]*)`, "gi" ); const i = /mso-level-number-format:([^;]{0,100});/gi; const o = /mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi; const r = new RegExp( `@list\\s+l${t.id}:level\\d\\s*{[^{]*mso-level-text:"%\\d\\\\.`, "gi" ); const s = new RegExp( `@list l${t.id}:level\\d\\s*{[^{]*mso-level-number-format:`, "gi" ); const a = r.exec(e); const c = s.exec(e); const l = a && !c; const d = n.exec(e); let u = "decimal"; let h = "ol"; let m = null; if (d && d[1]) { const e = i.exec(d[1]); if (e && e[1]) { u = e[1].trim(); h = u !== "bullet" && u !== "image" ? "ol" : "ul"; } if (u === "bullet") { const e = SQ(t.element); if (e) { u = e; } } else { const t = o.exec(d[1]); if (t && t[1]) { m = parseInt(t[1]); } } if (l) { h = "ol"; } } return { type: h, startIndex: m, style: BQ(u), isLegalStyleList: l }; } function SQ(t) { if ( t.name == "li" && t.parent.name == "ul" && t.parent.hasAttribute("type") ) { return t.parent.getAttribute("type"); } const e = TQ(t); if (!e) { return null; } const n = e._data; if (n === "o") { return "circle"; } else if (n === "·") { return "disc"; } else if (n === "§") { return "square"; } return null; } function TQ(t) { if (t.getChild(0).is("$text")) { return null; } for (const e of t.getChildren()) { if (!e.is("element", "span")) { continue; } const t = e.getChild(0); if (!t) { continue; } if (t.is("$text")) { return t; } return t.getChild(0); } return null; } function BQ(t) { if (t.startsWith("arabic-leading-zero")) { return "decimal-leading-zero"; } switch (t) { case "alpha-upper": return "upper-alpha"; case "alpha-lower": return "lower-alpha"; case "roman-upper": return "upper-roman"; case "roman-lower": return "lower-roman"; case "circle": case "disc": case "square": return t; default: return null; } } function MQ(t, e, n) { const i = e.createElement(t.type); if (t.style) { e.setStyle("list-style-type", t.style, i); } if (t.startIndex && t.startIndex > 1) { e.setAttribute("start", t.startIndex, i); } if (t.isLegalStyleList && n) { e.addClass("legal-list", i); } return i; } function IQ(t) { const e = t.getStyle("mso-list"); if (e === undefined) { return {}; } const n = e.match(/(^|\s{1,100})l(\d+)/i); const i = e.match(/\s{0,100}lfo(\d+)/i); const o = e.match(/\s{0,100}level(\d+)/i); if (n && i && o) { return { id: n[2], order: i[1], indent: parseInt(o[1]) }; } return { indent: 1 }; } function LQ(t, e) { const n = new Ru({ name: "span", styles: { "mso-list": "Ignore" } }); const i = e.createRangeIn(t); for (const t of i) { if (t.type === "elementStart" && n.match(t.item)) { e.remove(t.item); } } } function NQ(t) { const e = t.getStyle("margin-left"); if (e === undefined || e.endsWith("px")) { return e; } return wQ(e); } function zQ(t, e) { if (!t.childCount) { return; } const n = new $A(t.document); const i = RQ(t, n); VQ(i, t, n); FQ(i, t, n); OQ(t, n); const o = jQ(t, n); if (o.length) { UQ(o, HQ(e), n); } } function PQ(t) { return btoa( t .match(/\w{2}/g) .map((t) => String.fromCharCode(parseInt(t, 16))) .join("") ); } function RQ(t, e) { const n = e.createRangeIn(t); const i = new Ru({ name: /v:(.+)/ }); const o = []; for (const t of n) { if (t.type != "elementStart") { continue; } const e = t.item; const n = e.previousSibling; const r = n && n.is("element") ? n.name : null; const s = ["Chart"]; const a = i.match(e); const c = e.getAttribute("o:gfxdata"); const l = r === "v:shapetype"; const d = c && s.some((t) => e.getAttribute("id").includes(t)); if (a && c && !l && !d) { o.push(t.item.getAttribute("id")); } } return o; } function VQ(t, e, n) { const i = n.createRangeIn(e); const o = new Ru({ name: "img" }); const r = []; for (const e of i) { if (e.item.is("element") && o.match(e.item)) { const n = e.item; const i = n.getAttribute("v:shapes") ? n.getAttribute("v:shapes").split(" ") : []; if (i.length && i.every((e) => t.indexOf(e) > -1)) { r.push(n); } else if (!n.getAttribute("src")) { r.push(n); } } } for (const t of r) { n.remove(t); } } function OQ(t, e) { const n = e.createRangeIn(t); const i = new Ru({ name: /v:(.+)/ }); const o = []; for (const t of n) { if (t.type == "elementStart" && i.match(t.item)) { o.push(t.item); } } for (const t of o) { e.remove(t); } } function FQ(t, e, n) { const i = n.createRangeIn(e); const o = []; for (const e of i) { if (e.type == "elementStart" && e.item.is("element", "v:shape")) { const n = e.item.getAttribute("id"); if (t.includes(n)) { continue; } if (!r(e.item.parent.getChildren(), n)) { o.push(e.item); } } } for (const t of o) { const e = { src: s(t) }; if (t.hasAttribute("alt")) { e.alt = t.getAttribute("alt"); } const i = n.createElement("img", e); n.insertChild(t.index + 1, i, t.parent); } function r(t, e) { for (const n of t) { if (n.is("element")) { if (n.name == "img" && n.getAttribute("v:shapes") == e) { return true; } if (r(n.getChildren(), e)) { return true; } } } return false; } function s(t) { for (const e of t.getChildren()) { if (e.is("element") && e.getAttribute("src")) { return e.getAttribute("src"); } } } } function jQ(t, e) { const n = e.createRangeIn(t); const i = new Ru({ name: "img" }); const o = []; for (const t of n) { if (t.item.is("element") && i.match(t.item)) { if (t.item.getAttribute("src").startsWith("file://")) { o.push(t.item); } } } return o; } function HQ(t) { if (!t) { return []; } const e = /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/; const n = new RegExp("(?:(" + e.source + "))([\\da-fA-F\\s]+)\\}", "g"); const i = t.match(n); const o = []; if (i) { for (const t of i) { let n = false; if (t.includes("\\pngblip")) { n = "image/png"; } else if (t.includes("\\jpegblip")) { n = "image/jpeg"; } if (n) { o.push({ hex: t.replace(e, "").replace(/[^\da-fA-F]/g, ""), type: n, }); } } } return o; } function UQ(t, e, n) { if (t.length === e.length) { for (let i = 0; i < t.length; i++) { const o = `data:${e[i].type};base64,${PQ(e[i].hex)}`; n.setAttribute("src", o, t[i]); } } } function $Q(t) { const e = []; const n = new $A(t.document); for (const { item: i } of n.createRangeIn(t)) { if (!i.is("element")) { continue; } for (const t of i.getClassNames()) { if (/\bmso/gi.exec(t)) { n.removeClass(t, i); } } for (const t of i.getStyleNames()) { if (/\bmso/gi.exec(t)) { n.removeStyle(t, i); } } if ( i.is("element", "w:sdt") || (i.is("element", "w:sdtpr") && i.isEmpty) || (i.is("element", "o:p") && i.isEmpty) ) { e.push(i); } } for (const t of e) { const e = t.parent; const i = e.getChildIndex(t); n.insertChild(i, t.getChildren(), e); n.remove(t); } } const qQ = //i; const WQ = /xmlns:o="urn:schemas-microsoft-com/i; class GQ { constructor(t, e = false) { this.document = t; this.hasMultiLevelListPlugin = e; } isActive(t) { return qQ.test(t) || WQ.test(t); } execute(t) { const { body: e, stylesString: n } = t._parsedData; CQ(e, n, this.hasMultiLevelListPlugin); zQ(e, t.dataTransfer.getData("text/rtf")); $Q(e); t.content = e; } } function KQ(t, e) { for (const n of t.getChildren()) { if (n.is("element", "b") && n.getStyle("font-weight") === "normal") { const i = t.getChildIndex(n); e.remove(n); e.insertChild(i, n.getChildren(), t); } } } function YQ(t, e) { const n = new pm(e.document.stylesProcessor); const i = new wg(n, { renderingMode: "data" }); const o = i.blockElements; const r = i.inlineObjectElements; const s = []; for (const n of e.createRangeIn(t)) { const t = n.item; if (t.is("element", "br")) { const n = QQ(t, "forward", e, { blockElements: o, inlineObjectElements: r, }); const i = QQ(t, "backward", e, { blockElements: o, inlineObjectElements: r, }); const a = ZQ(n, o); const c = ZQ(i, o); if (c || a) { s.push(t); } } } for (const t of s) { if (t.hasClass("Apple-interchange-newline")) { e.remove(t); } else { e.replace(t, e.createElement("p")); } } } function QQ(t, e, n, { blockElements: i, inlineObjectElements: o }) { let r = n.createPositionAt(t, e == "forward" ? "after" : "before"); r = r.getLastMatchingPosition( ({ item: t }) => t.is("element") && !i.includes(t.name) && !o.includes(t.name), { direction: e } ); return e == "forward" ? r.nodeAfter : r.nodeBefore; } function ZQ(t, e) { return !!t && t.is("element") && e.includes(t.name); } const JQ = /id=("|')docs-internal-guid-[-0-9a-f]+("|')/i; class XQ { constructor(t) { this.document = t; } isActive(t) { return JQ.test(t); } execute(t) { const e = new $A(this.document); const { body: n } = t._parsedData; KQ(n, e); vQ(n, e); YQ(n, e); t.content = n; } } function tZ(t, e) { for (const n of t.getChildren()) { if (n.is("element", "table") && n.hasAttribute("xmlns")) { e.removeAttribute("xmlns", n); } } } function eZ(t, e) { for (const n of t.getChildren()) { if (n.is("element", "google-sheets-html-origin")) { const i = t.getChildIndex(n); e.remove(n); e.insertChild(i, n.getChildren(), t); } } } function nZ(t, e) { for (const n of t.getChildren()) { if (n.is("element", "table") && n.getStyle("width") === "0px") { e.removeStyle("width", n); } } } function iZ(t, e) { for (const n of Array.from(t.getChildren())) { if (n.is("element", "style")) { e.remove(n); } } } const oZ = /[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g, "$1$2" ) .replace(/<\/span>/g, "") .replace( /()[\r\n]+(<\/span>)/g, "$1 $2" ) .replace(/ <\//g, " <\/o:p>/g, " ") .replace(/( |\u00A0)<\/o:p>/g, "") .replace(/>([^\S\r\n]*[\r\n]\s*)<"); } function aZ(t) { t.querySelectorAll("span[style*=spacerun]").forEach((t) => { const e = t; const n = e.innerText.length || 0; e.innerText = Array(n + 1) .join("  ") .substr(0, n); }); } function cZ(t) { return t.replace( /(\s+)<\/span>/g, (t, e) => e.length === 1 ? " " : Array(e.length + 1) .join("  ") .substr(0, e.length) ); } function lZ(t, e) { const n = new DOMParser(); t = t.replace(/