first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:30:42 +03:00
commit 4d92991817
1982 changed files with 284835 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
import { Registry } from 'parchment';
declare const createRegistryWithFormats: (formats: string[], sourceRegistry: Registry, debug: {
error: (errorMessage: string) => void;
}) => Registry;
export default createRegistryWithFormats;

View File

@@ -0,0 +1,29 @@
import { Registry } from 'parchment';
const MAX_REGISTER_ITERATIONS = 100;
const CORE_FORMATS = ['block', 'break', 'cursor', 'inline', 'scroll', 'text'];
const createRegistryWithFormats = (formats, sourceRegistry, debug) => {
const registry = new Registry();
CORE_FORMATS.forEach(name => {
const coreBlot = sourceRegistry.query(name);
if (coreBlot) registry.register(coreBlot);
});
formats.forEach(name => {
let format = sourceRegistry.query(name);
if (!format) {
debug.error(`Cannot register "${name}" specified in "formats" config. Are you sure it was registered?`);
}
let iterations = 0;
while (format) {
registry.register(format);
format = 'blotName' in format ? format.requiredContainer ?? null : null;
iterations += 1;
if (iterations > MAX_REGISTER_ITERATIONS) {
debug.error(`Cycle detected in registering blot requiredContainer: "${name}"`);
break;
}
}
});
return registry;
};
export default createRegistryWithFormats;
//# sourceMappingURL=createRegistryWithFormats.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"createRegistryWithFormats.js","names":["Registry","MAX_REGISTER_ITERATIONS","CORE_FORMATS","createRegistryWithFormats","formats","sourceRegistry","debug","registry","forEach","name","coreBlot","query","register","format","error","iterations","requiredContainer"],"sources":["../../../src/core/utils/createRegistryWithFormats.ts"],"sourcesContent":["import { Registry } from 'parchment';\n\nconst MAX_REGISTER_ITERATIONS = 100;\nconst CORE_FORMATS = ['block', 'break', 'cursor', 'inline', 'scroll', 'text'];\n\nconst createRegistryWithFormats = (\n formats: string[],\n sourceRegistry: Registry,\n debug: { error: (errorMessage: string) => void },\n) => {\n const registry = new Registry();\n CORE_FORMATS.forEach((name) => {\n const coreBlot = sourceRegistry.query(name);\n if (coreBlot) registry.register(coreBlot);\n });\n\n formats.forEach((name) => {\n let format = sourceRegistry.query(name);\n if (!format) {\n debug.error(\n `Cannot register \"${name}\" specified in \"formats\" config. Are you sure it was registered?`,\n );\n }\n let iterations = 0;\n while (format) {\n registry.register(format);\n format = 'blotName' in format ? format.requiredContainer ?? null : null;\n\n iterations += 1;\n if (iterations > MAX_REGISTER_ITERATIONS) {\n debug.error(\n `Cycle detected in registering blot requiredContainer: \"${name}\"`,\n );\n break;\n }\n }\n });\n\n return registry;\n};\n\nexport default createRegistryWithFormats;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,WAAW;AAEpC,MAAMC,uBAAuB,GAAG,GAAG;AACnC,MAAMC,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;AAE7E,MAAMC,yBAAyB,GAAGA,CAChCC,OAAiB,EACjBC,cAAwB,EACxBC,KAAgD,KAC7C;EACH,MAAMC,QAAQ,GAAG,IAAIP,QAAQ,CAAC,CAAC;EAC/BE,YAAY,CAACM,OAAO,CAAEC,IAAI,IAAK;IAC7B,MAAMC,QAAQ,GAAGL,cAAc,CAACM,KAAK,CAACF,IAAI,CAAC;IAC3C,IAAIC,QAAQ,EAAEH,QAAQ,CAACK,QAAQ,CAACF,QAAQ,CAAC;EAC3C,CAAC,CAAC;EAEFN,OAAO,CAACI,OAAO,CAAEC,IAAI,IAAK;IACxB,IAAII,MAAM,GAAGR,cAAc,CAACM,KAAK,CAACF,IAAI,CAAC;IACvC,IAAI,CAACI,MAAM,EAAE;MACXP,KAAK,CAACQ,KAAK,CACR,oBAAmBL,IAAK,kEAC3B,CAAC;IACH;IACA,IAAIM,UAAU,GAAG,CAAC;IAClB,OAAOF,MAAM,EAAE;MACbN,QAAQ,CAACK,QAAQ,CAACC,MAAM,CAAC;MACzBA,MAAM,GAAG,UAAU,IAAIA,MAAM,GAAGA,MAAM,CAACG,iBAAiB,IAAI,IAAI,GAAG,IAAI;MAEvED,UAAU,IAAI,CAAC;MACf,IAAIA,UAAU,GAAGd,uBAAuB,EAAE;QACxCK,KAAK,CAACQ,KAAK,CACR,0DAAyDL,IAAK,GACjE,CAAC;QACD;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAOF,QAAQ;AACjB,CAAC;AAED,eAAeJ,yBAAyB","ignoreList":[]}

View File

@@ -0,0 +1,8 @@
export type Rect = {
top: number;
right: number;
bottom: number;
left: number;
};
declare const scrollRectIntoView: (root: HTMLElement, targetRect: Rect) => void;
export default scrollRectIntoView;

View File

@@ -0,0 +1,75 @@
const getParentElement = element => element.parentElement || element.getRootNode().host || null;
const getElementRect = element => {
const rect = element.getBoundingClientRect();
const scaleX = 'offsetWidth' in element && Math.abs(rect.width) / element.offsetWidth || 1;
const scaleY = 'offsetHeight' in element && Math.abs(rect.height) / element.offsetHeight || 1;
return {
top: rect.top,
right: rect.left + element.clientWidth * scaleX,
bottom: rect.top + element.clientHeight * scaleY,
left: rect.left
};
};
const paddingValueToInt = value => {
const number = parseInt(value, 10);
return Number.isNaN(number) ? 0 : number;
};
// Follow the steps described in https://www.w3.org/TR/cssom-view-1/#element-scrolling-members,
// assuming that the scroll option is set to 'nearest'.
const getScrollDistance = (targetStart, targetEnd, scrollStart, scrollEnd, scrollPaddingStart, scrollPaddingEnd) => {
if (targetStart < scrollStart && targetEnd > scrollEnd) {
return 0;
}
if (targetStart < scrollStart) {
return -(scrollStart - targetStart + scrollPaddingStart);
}
if (targetEnd > scrollEnd) {
return targetEnd - targetStart > scrollEnd - scrollStart ? targetStart + scrollPaddingStart - scrollStart : targetEnd - scrollEnd + scrollPaddingEnd;
}
return 0;
};
const scrollRectIntoView = (root, targetRect) => {
const document = root.ownerDocument;
let rect = targetRect;
let current = root;
while (current) {
const isDocumentBody = current === document.body;
const bounding = isDocumentBody ? {
top: 0,
right: window.visualViewport?.width ?? document.documentElement.clientWidth,
bottom: window.visualViewport?.height ?? document.documentElement.clientHeight,
left: 0
} : getElementRect(current);
const style = getComputedStyle(current);
const scrollDistanceX = getScrollDistance(rect.left, rect.right, bounding.left, bounding.right, paddingValueToInt(style.scrollPaddingLeft), paddingValueToInt(style.scrollPaddingRight));
const scrollDistanceY = getScrollDistance(rect.top, rect.bottom, bounding.top, bounding.bottom, paddingValueToInt(style.scrollPaddingTop), paddingValueToInt(style.scrollPaddingBottom));
if (scrollDistanceX || scrollDistanceY) {
if (isDocumentBody) {
document.defaultView?.scrollBy(scrollDistanceX, scrollDistanceY);
} else {
const {
scrollLeft,
scrollTop
} = current;
if (scrollDistanceY) {
current.scrollTop += scrollDistanceY;
}
if (scrollDistanceX) {
current.scrollLeft += scrollDistanceX;
}
const scrolledLeft = current.scrollLeft - scrollLeft;
const scrolledTop = current.scrollTop - scrollTop;
rect = {
left: rect.left - scrolledLeft,
top: rect.top - scrolledTop,
right: rect.right - scrolledLeft,
bottom: rect.bottom - scrolledTop
};
}
}
current = isDocumentBody || style.position === 'fixed' ? null : getParentElement(current);
}
};
export default scrollRectIntoView;
//# sourceMappingURL=scrollRectIntoView.js.map

File diff suppressed because one or more lines are too long