feat: Docling components (#8394)
* initial DoclingComponent Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * Correct Docling icon style properties. Signed-off-by: DKL <dkl@zurich.ibm.com> * add file_path Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * add load from json and export to various formats Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * add chunking component Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * Update src/backend/base/langflow/components/docling/docling_inline.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * add Docling Serve component Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * apply some suggestions Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * Update src/backend/base/langflow/components/docling/_utils.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update src/backend/base/langflow/components/docling/docling_remote.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * add check for DoclingDocument in list Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * fix import Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * add maximum poll timeout and better checks for the retry logic Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * add updated starter_projects Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * refactor _get_converter Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * return only DataFrame Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * remove LoadDoclingDocument Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * more options in the chunk component Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * move docling imports Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * [autofix.ci] apply automated fixes * move utils to langflow.base Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> --------- Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> Signed-off-by: DKL <dkl@zurich.ibm.com> Co-authored-by: DKL <dkl@zurich.ibm.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
5b5f1ddac5
commit
6631de2aae
15 changed files with 1837 additions and 151 deletions
47
src/backend/base/langflow/base/data/docling_utils.py
Normal file
47
src/backend/base/langflow/base/data/docling_utils.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
from docling_core.types.doc import DoclingDocument
|
||||
|
||||
from langflow.schema.data import Data
|
||||
from langflow.schema.dataframe import DataFrame
|
||||
|
||||
|
||||
def extract_docling_documents(data_inputs: Data | list[Data] | DataFrame, doc_key: str) -> list[DoclingDocument]:
|
||||
documents: list[DoclingDocument] = []
|
||||
if isinstance(data_inputs, DataFrame):
|
||||
if not len(data_inputs):
|
||||
msg = "DataFrame is empty"
|
||||
raise TypeError(msg)
|
||||
|
||||
if doc_key not in data_inputs.columns:
|
||||
msg = f"Column '{doc_key}' not found in DataFrame"
|
||||
raise TypeError(msg)
|
||||
try:
|
||||
documents = data_inputs[doc_key].tolist()
|
||||
except Exception as e:
|
||||
msg = f"Error extracting DoclingDocument from DataFrame: {e}"
|
||||
raise TypeError(msg) from e
|
||||
else:
|
||||
if not data_inputs:
|
||||
msg = "No data inputs provided"
|
||||
raise TypeError(msg)
|
||||
|
||||
if isinstance(data_inputs, Data):
|
||||
if doc_key not in data_inputs.data:
|
||||
msg = f"{doc_key} field not available in the input Data"
|
||||
raise TypeError(msg)
|
||||
documents = [data_inputs.data[doc_key]]
|
||||
else:
|
||||
try:
|
||||
documents = [
|
||||
input_.data[doc_key]
|
||||
for input_ in data_inputs
|
||||
if isinstance(input_, Data)
|
||||
and doc_key in input_.data
|
||||
and isinstance(input_.data[doc_key], DoclingDocument)
|
||||
]
|
||||
if not documents:
|
||||
msg = f"No valid Data inputs found in {type(data_inputs)}"
|
||||
raise TypeError(msg)
|
||||
except AttributeError as e:
|
||||
msg = f"Invalid input type in collection: {e}"
|
||||
raise TypeError(msg) from e
|
||||
return documents
|
||||
11
src/backend/base/langflow/components/docling/__init__.py
Normal file
11
src/backend/base/langflow/components/docling/__init__.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
from .chunk_docling_document import ChunkDoclingDocumentComponent
|
||||
from .docling_inline import DoclingInlineComponent
|
||||
from .docling_remote import DoclingRemoteComponent
|
||||
from .export_docling_document import ExportDoclingDocumentComponent
|
||||
|
||||
__all__ = [
|
||||
"ChunkDoclingDocumentComponent",
|
||||
"DoclingInlineComponent",
|
||||
"DoclingRemoteComponent",
|
||||
"ExportDoclingDocumentComponent",
|
||||
]
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
import json
|
||||
|
||||
import tiktoken
|
||||
from docling_core.transforms.chunker import BaseChunker, DocMeta
|
||||
from docling_core.transforms.chunker.hierarchical_chunker import HierarchicalChunker
|
||||
from docling_core.transforms.chunker.hybrid_chunker import HybridChunker
|
||||
from docling_core.transforms.chunker.tokenizer.huggingface import HuggingFaceTokenizer
|
||||
from docling_core.transforms.chunker.tokenizer.openai import OpenAITokenizer
|
||||
|
||||
from langflow.base.data.docling_utils import extract_docling_documents
|
||||
from langflow.custom import Component
|
||||
from langflow.io import DropdownInput, HandleInput, IntInput, MessageTextInput, Output, StrInput
|
||||
from langflow.schema import Data, DataFrame
|
||||
|
||||
|
||||
class ChunkDoclingDocumentComponent(Component):
|
||||
display_name: str = "Chunk DoclingDocument"
|
||||
description: str = "Use the DocumentDocument chunkers to split the document into chunks."
|
||||
documentation = "https://docling-project.github.io/docling/concepts/chunking/"
|
||||
icon = "Docling"
|
||||
name = "ChunkDoclingDocument"
|
||||
|
||||
inputs = [
|
||||
HandleInput(
|
||||
name="data_inputs",
|
||||
display_name="Data or DataFrame",
|
||||
info="The data with documents to split in chunks.",
|
||||
input_types=["Data", "DataFrame"],
|
||||
required=True,
|
||||
),
|
||||
DropdownInput(
|
||||
name="chunker",
|
||||
display_name="Chunker",
|
||||
options=["HybridChunker", "HierarchicalChunker"],
|
||||
info=("Which chunker to use."),
|
||||
value="HybridChunker",
|
||||
real_time_refresh=True,
|
||||
),
|
||||
DropdownInput(
|
||||
name="provider",
|
||||
display_name="Provider",
|
||||
options=["Hugging Face", "OpenAI"],
|
||||
info=("Which tokenizer provider."),
|
||||
value="Hugging Face",
|
||||
show=True,
|
||||
real_time_refresh=True,
|
||||
advanced=True,
|
||||
dynamic=True,
|
||||
),
|
||||
StrInput(
|
||||
name="hf_model_name",
|
||||
display_name="HF model name",
|
||||
info=(
|
||||
"Model name of the tokenizer to use with the HybridChunker when Hugging Face is chosen as a tokenizer."
|
||||
),
|
||||
value="sentence-transformers/all-MiniLM-L6-v2",
|
||||
show=True,
|
||||
advanced=True,
|
||||
dynamic=True,
|
||||
),
|
||||
StrInput(
|
||||
name="openai_model_name",
|
||||
display_name="OpenAI model name",
|
||||
info=("Model name of the tokenizer to use with the HybridChunker when OpenAI is chosen as a tokenizer."),
|
||||
value="gpt-4o",
|
||||
show=False,
|
||||
advanced=True,
|
||||
dynamic=True,
|
||||
),
|
||||
IntInput(
|
||||
name="max_tokens",
|
||||
display_name="Maximum tokens",
|
||||
info=("Maximum number of tokens for the HybridChunker."),
|
||||
show=True,
|
||||
required=False,
|
||||
advanced=True,
|
||||
dynamic=True,
|
||||
),
|
||||
MessageTextInput(
|
||||
name="doc_key",
|
||||
display_name="Doc Key",
|
||||
info="The key to use for the DoclingDocument column.",
|
||||
value="doc",
|
||||
advanced=True,
|
||||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="DataFrame", name="dataframe", method="chunk_documents"),
|
||||
]
|
||||
|
||||
def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:
|
||||
if field_name == "chunker":
|
||||
provider_type = build_config["provider"]["value"]
|
||||
is_hf = provider_type == "Hugging Face"
|
||||
is_openai = provider_type == "OpenAI"
|
||||
if field_value == "HybridChunker":
|
||||
build_config["provider"]["show"] = True
|
||||
build_config["hf_model_name"]["show"] = is_hf
|
||||
build_config["openai_model_name"]["show"] = is_openai
|
||||
build_config["max_tokens"]["show"] = True
|
||||
else:
|
||||
build_config["provider"]["show"] = False
|
||||
build_config["hf_model_name"]["show"] = False
|
||||
build_config["openai_model_name"]["show"] = False
|
||||
build_config["max_tokens"]["show"] = False
|
||||
elif field_name == "provider" and build_config["chunker"]["value"] == "HybridChunker":
|
||||
if field_value == "Hugging Face":
|
||||
build_config["hf_model_name"]["show"] = True
|
||||
build_config["openai_model_name"]["show"] = False
|
||||
elif field_value == "OpenAI":
|
||||
build_config["hf_model_name"]["show"] = False
|
||||
build_config["openai_model_name"]["show"] = True
|
||||
|
||||
return build_config
|
||||
|
||||
def _docs_to_data(self, docs) -> list[Data]:
|
||||
return [Data(text=doc.page_content, data=doc.metadata) for doc in docs]
|
||||
|
||||
def chunk_documents(self) -> DataFrame:
|
||||
documents = extract_docling_documents(self.data_inputs, self.doc_key)
|
||||
|
||||
chunker: BaseChunker
|
||||
if self.chunker == "HybridChunker":
|
||||
max_tokens: int | None = self.max_tokens if self.max_tokens else None
|
||||
if self.provider == "Hugging Face":
|
||||
tokenizer = HuggingFaceTokenizer.from_pretrained(
|
||||
model_name=self.hf_model_name,
|
||||
max_tokens=max_tokens,
|
||||
)
|
||||
elif self.provider == "OpenAI":
|
||||
if max_tokens is None:
|
||||
max_tokens = 128 * 1024 # context window length required for OpenAI tokenizers
|
||||
tokenizer = OpenAITokenizer(
|
||||
tokenizer=tiktoken.encoding_for_model(self.openai_model_name), max_tokens=max_tokens
|
||||
)
|
||||
chunker = HybridChunker(
|
||||
tokenizer=tokenizer,
|
||||
)
|
||||
elif self.chunker == "HierarchicalChunker":
|
||||
chunker = HierarchicalChunker()
|
||||
|
||||
results: list[Data] = []
|
||||
try:
|
||||
for doc in documents:
|
||||
for chunk in chunker.chunk(dl_doc=doc):
|
||||
enriched_text = chunker.contextualize(chunk=chunk)
|
||||
meta = DocMeta.model_validate(chunk.meta)
|
||||
|
||||
results.append(
|
||||
Data(
|
||||
data={
|
||||
"text": enriched_text,
|
||||
"document_id": f"{doc.origin.binary_hash}",
|
||||
"doc_items": json.dumps([item.self_ref for item in meta.doc_items]),
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
msg = f"Error splitting text: {e}"
|
||||
raise TypeError(msg) from e
|
||||
|
||||
return DataFrame(results)
|
||||
134
src/backend/base/langflow/components/docling/docling_inline.py
Normal file
134
src/backend/base/langflow/components/docling/docling_inline.py
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
from docling.datamodel.base_models import ConversionStatus, InputFormat
|
||||
from docling.datamodel.pipeline_options import (
|
||||
OcrOptions,
|
||||
PdfPipelineOptions,
|
||||
VlmPipelineOptions,
|
||||
)
|
||||
from docling.document_converter import DocumentConverter, FormatOption, PdfFormatOption
|
||||
from docling.models.factories import get_ocr_factory
|
||||
from docling.pipeline.vlm_pipeline import VlmPipeline
|
||||
|
||||
from langflow.base.data import BaseFileComponent
|
||||
from langflow.inputs import DropdownInput
|
||||
from langflow.schema import Data
|
||||
|
||||
|
||||
class DoclingInlineComponent(BaseFileComponent):
|
||||
display_name = "Docling"
|
||||
description = "Uses Docling to process input documents running the Docling models locally."
|
||||
documentation = "https://docling-project.github.io/docling/"
|
||||
trace_type = "tool"
|
||||
icon = "Docling"
|
||||
name = "DoclingInline"
|
||||
|
||||
# https://docling-project.github.io/docling/usage/supported_formats/
|
||||
VALID_EXTENSIONS = [
|
||||
"adoc",
|
||||
"asciidoc",
|
||||
"asc",
|
||||
"bmp",
|
||||
"csv",
|
||||
"dotx",
|
||||
"dotm",
|
||||
"docm",
|
||||
"docx",
|
||||
"htm",
|
||||
"html",
|
||||
"jpeg",
|
||||
"json",
|
||||
"md",
|
||||
"pdf",
|
||||
"png",
|
||||
"potx",
|
||||
"ppsx",
|
||||
"pptm",
|
||||
"potm",
|
||||
"ppsm",
|
||||
"pptx",
|
||||
"tiff",
|
||||
"txt",
|
||||
"xls",
|
||||
"xlsx",
|
||||
"xhtml",
|
||||
"xml",
|
||||
"webp",
|
||||
]
|
||||
|
||||
inputs = [
|
||||
*BaseFileComponent._base_inputs,
|
||||
DropdownInput(
|
||||
name="pipeline",
|
||||
display_name="Pipeline",
|
||||
info="Docling pipeline to use",
|
||||
options=["standard", "vlm"],
|
||||
real_time_refresh=False,
|
||||
value="standard",
|
||||
),
|
||||
DropdownInput(
|
||||
name="ocr_engine",
|
||||
display_name="Ocr",
|
||||
info="OCR engine to use",
|
||||
options=["", "easyocr", "tesserocr", "rapidocr", "ocrmac"],
|
||||
real_time_refresh=False,
|
||||
value="",
|
||||
),
|
||||
# TODO: expose more Docling options
|
||||
]
|
||||
|
||||
outputs = [
|
||||
*BaseFileComponent._base_outputs,
|
||||
]
|
||||
|
||||
def process_files(self, file_list: list[BaseFileComponent.BaseFile]) -> list[BaseFileComponent.BaseFile]:
|
||||
# Configure the standard PDF pipeline
|
||||
def _get_standard_opts() -> PdfPipelineOptions:
|
||||
pipeline_options = PdfPipelineOptions()
|
||||
pipeline_options.do_ocr = self.ocr_engine != ""
|
||||
if pipeline_options.do_ocr:
|
||||
ocr_factory = get_ocr_factory(
|
||||
allow_external_plugins=False,
|
||||
)
|
||||
|
||||
ocr_options: OcrOptions = ocr_factory.create_options(
|
||||
kind=self.ocr_engine,
|
||||
)
|
||||
pipeline_options.ocr_options = ocr_options
|
||||
return pipeline_options
|
||||
|
||||
# Configure the VLM pipeline
|
||||
def _get_vlm_opts() -> VlmPipelineOptions:
|
||||
return VlmPipelineOptions()
|
||||
|
||||
# Configure the main format options and create the DocumentConverter()
|
||||
def _get_converter() -> DocumentConverter:
|
||||
if self.pipeline == "standard":
|
||||
pdf_format_option = PdfFormatOption(
|
||||
pipeline_options=_get_standard_opts(),
|
||||
)
|
||||
elif self.pipeline == "vlm":
|
||||
pdf_format_option = PdfFormatOption(pipeline_cls=VlmPipeline, pipeline_options=_get_vlm_opts())
|
||||
|
||||
format_options: dict[InputFormat, FormatOption] = {
|
||||
InputFormat.PDF: pdf_format_option,
|
||||
InputFormat.IMAGE: pdf_format_option,
|
||||
}
|
||||
|
||||
return DocumentConverter(format_options=format_options)
|
||||
|
||||
file_paths = [file.path for file in file_list if file.path]
|
||||
|
||||
if not file_paths:
|
||||
self.log("No files to process.")
|
||||
return file_list
|
||||
|
||||
converter = _get_converter()
|
||||
results = converter.convert_all(file_paths)
|
||||
|
||||
processed_data: list[Data | None] = [
|
||||
Data(data={"doc": res.document, "file_path": str(res.input.file)})
|
||||
if res.status == ConversionStatus.SUCCESS
|
||||
else None
|
||||
for res in results
|
||||
]
|
||||
|
||||
return self.rollup_data(file_list, processed_data)
|
||||
193
src/backend/base/langflow/components/docling/docling_remote.py
Normal file
193
src/backend/base/langflow/components/docling/docling_remote.py
Normal file
|
|
@ -0,0 +1,193 @@
|
|||
import base64
|
||||
import time
|
||||
from concurrent.futures import Future, ThreadPoolExecutor
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import httpx
|
||||
from docling_core.types.doc import DoclingDocument
|
||||
from pydantic import ValidationError
|
||||
|
||||
from langflow.base.data import BaseFileComponent
|
||||
from langflow.inputs import IntInput, NestedDictInput, StrInput
|
||||
from langflow.inputs.inputs import FloatInput
|
||||
from langflow.schema import Data
|
||||
|
||||
|
||||
class DoclingRemoteComponent(BaseFileComponent):
|
||||
display_name = "Docling Serve"
|
||||
description = "Uses Docling to process input documents connecting to your instance of Docling Serve."
|
||||
documentation = "https://docling-project.github.io/docling/"
|
||||
trace_type = "tool"
|
||||
icon = "Docling"
|
||||
name = "DoclingRemote"
|
||||
|
||||
MAX_500_RETRIES = 5
|
||||
|
||||
# https://docling-project.github.io/docling/usage/supported_formats/
|
||||
VALID_EXTENSIONS = [
|
||||
"adoc",
|
||||
"asciidoc",
|
||||
"asc",
|
||||
"bmp",
|
||||
"csv",
|
||||
"dotx",
|
||||
"dotm",
|
||||
"docm",
|
||||
"docx",
|
||||
"htm",
|
||||
"html",
|
||||
"jpeg",
|
||||
"json",
|
||||
"md",
|
||||
"pdf",
|
||||
"png",
|
||||
"potx",
|
||||
"ppsx",
|
||||
"pptm",
|
||||
"potm",
|
||||
"ppsm",
|
||||
"pptx",
|
||||
"tiff",
|
||||
"txt",
|
||||
"xls",
|
||||
"xlsx",
|
||||
"xhtml",
|
||||
"xml",
|
||||
"webp",
|
||||
]
|
||||
|
||||
inputs = [
|
||||
*BaseFileComponent._base_inputs,
|
||||
StrInput(
|
||||
name="api_url",
|
||||
display_name="Server address",
|
||||
info="URL of the Docling Serve instance.",
|
||||
required=True,
|
||||
),
|
||||
IntInput(
|
||||
name="max_concurrency",
|
||||
display_name="Concurrency",
|
||||
info="Maximum number of concurrent requests for the server.",
|
||||
advanced=True,
|
||||
value=2,
|
||||
),
|
||||
FloatInput(
|
||||
name="max_poll_timeout",
|
||||
display_name="Maximum poll time",
|
||||
info="Maximum waiting time for the document conversion to complete.",
|
||||
advanced=True,
|
||||
value=3600,
|
||||
),
|
||||
NestedDictInput(
|
||||
name="api_headers",
|
||||
display_name="HTTP headers",
|
||||
advanced=True,
|
||||
required=False,
|
||||
info=("Optional dictionary of additional headers required for connecting to Docling Serve."),
|
||||
),
|
||||
NestedDictInput(
|
||||
name="docling_serve_opts",
|
||||
display_name="Docling options",
|
||||
advanced=True,
|
||||
required=False,
|
||||
info=(
|
||||
"Optional dictionary of additional options. "
|
||||
"See https://github.com/docling-project/docling-serve/blob/main/docs/usage.md for more information."
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
*BaseFileComponent._base_outputs,
|
||||
]
|
||||
|
||||
def process_files(self, file_list: list[BaseFileComponent.BaseFile]) -> list[BaseFileComponent.BaseFile]:
|
||||
base_url = f"{self.api_url}/v1alpha"
|
||||
|
||||
def _convert_document(client: httpx.Client, file_path: Path, options: dict[str, Any]) -> Data | None:
|
||||
encoded_doc = base64.b64encode(file_path.read_bytes()).decode()
|
||||
payload = {
|
||||
"options": options,
|
||||
"file_sources": [{"base64_string": encoded_doc, "filename": file_path.name}],
|
||||
}
|
||||
|
||||
response = client.post(f"{base_url}/convert/source/async", json=payload)
|
||||
response.raise_for_status()
|
||||
task = response.json()
|
||||
|
||||
http_failures = 0
|
||||
retry_status_start = 500
|
||||
retry_status_end = 600
|
||||
start_wait_time = time.monotonic()
|
||||
while task["task_status"] not in ("success", "failure"):
|
||||
# Check if processing exceeds the maximum poll timeout
|
||||
processing_time = time.monotonic() - start_wait_time
|
||||
if processing_time >= self.max_poll_timeout:
|
||||
msg = (
|
||||
f"Processing time {processing_time=} exceeds the maximum poll timeout {self.max_poll_timeout=}."
|
||||
"Please increase the max_poll_timeout parameter or review why the processing "
|
||||
"takes long on the server."
|
||||
)
|
||||
self.log(msg)
|
||||
raise RuntimeError(msg)
|
||||
|
||||
# Call for a new status update
|
||||
time.sleep(2)
|
||||
response = client.get(f"{base_url}/status/poll/{task['task_id']}")
|
||||
|
||||
# Check if the status call gets into 5xx errors and retry
|
||||
if retry_status_start <= response.status_code < retry_status_end:
|
||||
http_failures += 1
|
||||
if http_failures > self.MAX_500_RETRIES:
|
||||
self.log(f"The status requests got a http response {response.status_code} too many times.")
|
||||
return None
|
||||
continue
|
||||
|
||||
# Update task status
|
||||
task = response.json()
|
||||
|
||||
result_resp = client.get(f"{base_url}/result/{task['task_id']}")
|
||||
result_resp.raise_for_status()
|
||||
result = result_resp.json()
|
||||
|
||||
if "json_content" not in result["document"] or result["document"]["json_content"] is None:
|
||||
self.log("No JSON DoclingDocument found in the result.")
|
||||
return None
|
||||
|
||||
try:
|
||||
doc = DoclingDocument.model_validate(result["document"]["json_content"])
|
||||
return Data(data={"doc": doc, "file_path": str(file_path)})
|
||||
except ValidationError as e:
|
||||
self.log(f"Error validating the document. {e}")
|
||||
return None
|
||||
|
||||
docling_options = {
|
||||
"to_formats": ["json"],
|
||||
"image_export_mode": "placeholder",
|
||||
"return_as_file": False,
|
||||
**(self.docling_serve_opts or {}),
|
||||
}
|
||||
|
||||
processed_data: list[Data | None] = []
|
||||
with (
|
||||
httpx.Client(headers=self.api_headers) as client,
|
||||
ThreadPoolExecutor(max_workers=self.max_concurrency) as executor,
|
||||
):
|
||||
futures: list[tuple[int, Future]] = []
|
||||
for i, file in enumerate(file_list):
|
||||
if file.path is None:
|
||||
processed_data.append(None)
|
||||
continue
|
||||
|
||||
futures.append((i, executor.submit(_convert_document, client, file.path, docling_options)))
|
||||
|
||||
for _index, future in futures:
|
||||
try:
|
||||
result_data = future.result()
|
||||
processed_data.append(result_data)
|
||||
except (httpx.HTTPStatusError, httpx.RequestError, KeyError, ValueError) as exc:
|
||||
self.log(f"Docling remote processing failed: {exc}")
|
||||
raise
|
||||
|
||||
return self.rollup_data(file_list, processed_data)
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
from docling_core.types.doc import ImageRefMode
|
||||
|
||||
from langflow.base.data.docling_utils import extract_docling_documents
|
||||
from langflow.custom import Component
|
||||
from langflow.io import DropdownInput, HandleInput, MessageTextInput, Output, StrInput
|
||||
from langflow.schema import Data, DataFrame
|
||||
|
||||
|
||||
class ExportDoclingDocumentComponent(Component):
|
||||
display_name: str = "Export DoclingDocument"
|
||||
description: str = "Export DoclingDocument to markdown, html or other formats."
|
||||
documentation = "https://docling-project.github.io/docling/"
|
||||
icon = "Docling"
|
||||
name = "ExportDoclingDocument"
|
||||
|
||||
inputs = [
|
||||
HandleInput(
|
||||
name="data_inputs",
|
||||
display_name="Data or DataFrame",
|
||||
info="The data with documents to export.",
|
||||
input_types=["Data", "DataFrame"],
|
||||
required=True,
|
||||
),
|
||||
DropdownInput(
|
||||
name="export_format",
|
||||
display_name="Export format",
|
||||
options=["Markdown", "HTML", "Plaintext", "DocTags"],
|
||||
info="Select the export format to convert the input.",
|
||||
value="Markdown",
|
||||
),
|
||||
DropdownInput(
|
||||
name="image_mode",
|
||||
display_name="Image export mode",
|
||||
options=["placeholder", "embedded"],
|
||||
info=(
|
||||
"Specify how images are exported in the output. Placeholder will replace the images with a string, "
|
||||
"whereas Embedded will include them as base64 encoded images."
|
||||
),
|
||||
value="placeholder",
|
||||
),
|
||||
StrInput(
|
||||
name="md_image_placeholder",
|
||||
display_name="Image placeholder",
|
||||
info="Specify the image placeholder for markdown exports.",
|
||||
value="<!-- image -->",
|
||||
advanced=True,
|
||||
),
|
||||
StrInput(
|
||||
name="md_page_break_placeholder",
|
||||
display_name="Page break placeholder",
|
||||
info="Add this placeholder betweek pages in the markdown output.",
|
||||
value="",
|
||||
advanced=True,
|
||||
),
|
||||
MessageTextInput(
|
||||
name="doc_key",
|
||||
display_name="Doc Key",
|
||||
info="The key to use for the DoclingDocument column.",
|
||||
value="doc",
|
||||
advanced=True,
|
||||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="Exported data", name="data", method="export_document"),
|
||||
Output(display_name="DataFrame", name="dataframe", method="as_dataframe"),
|
||||
]
|
||||
|
||||
def export_document(self) -> list[Data]:
|
||||
documents = extract_docling_documents(self.data_inputs, self.doc_key)
|
||||
|
||||
results: list[Data] = []
|
||||
try:
|
||||
image_mode = ImageRefMode(self.image_mode)
|
||||
for doc in documents:
|
||||
content = ""
|
||||
if self.export_format == "Markdown":
|
||||
content = doc.export_to_markdown(
|
||||
image_mode=image_mode,
|
||||
image_placeholder=self.md_image_placeholder,
|
||||
page_break_placeholder=self.md_page_break_placeholder,
|
||||
)
|
||||
elif self.export_format == "HTML":
|
||||
content = doc.export_to_html(image_mode=image_mode)
|
||||
elif self.export_format == "Plaintext":
|
||||
content = doc.export_to_text()
|
||||
elif self.export_format == "DocTags":
|
||||
content = doc.export_to_doctags()
|
||||
|
||||
results.append(Data(text=content))
|
||||
except Exception as e:
|
||||
msg = f"Error splitting text: {e}"
|
||||
raise TypeError(msg) from e
|
||||
|
||||
return results
|
||||
|
||||
def as_dataframe(self) -> DataFrame:
|
||||
return DataFrame(self.export_document())
|
||||
241
src/frontend/package-lock.json
generated
241
src/frontend/package-lock.json
generated
|
|
@ -360,13 +360,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.4.tgz",
|
||||
"integrity": "sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==",
|
||||
"version": "7.27.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
|
||||
"integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.27.2",
|
||||
"@babel/types": "^7.27.3"
|
||||
"@babel/types": "^7.27.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
|
@ -388,9 +388,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.4.tgz",
|
||||
"integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==",
|
||||
"version": "7.27.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
|
||||
"integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
|
@ -429,9 +429,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.27.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz",
|
||||
"integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==",
|
||||
"version": "7.27.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
|
||||
"integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
|
|
@ -4096,14 +4096,14 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@react-aria/focus": {
|
||||
"version": "3.20.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.3.tgz",
|
||||
"integrity": "sha512-rR5uZUMSY4xLHmpK/I8bP1V6vUNHFo33gTvrvNUsAKKqvMfa7R2nu5A6v97dr5g6tVH6xzpdkPsOJCWh90H2cw==",
|
||||
"version": "3.20.4",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.4.tgz",
|
||||
"integrity": "sha512-E9M/kPYvF1fBZpkRXsKqMhvBVEyTY7vmkHeXLJo6tInKQOjYyYs0VeWlnGnxBjQIAH7J7ZKAORfTFQQHyhoueQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/interactions": "^3.25.1",
|
||||
"@react-aria/utils": "^3.29.0",
|
||||
"@react-types/shared": "^3.29.1",
|
||||
"@react-aria/interactions": "^3.25.2",
|
||||
"@react-aria/utils": "^3.29.1",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@swc/helpers": "^0.5.0",
|
||||
"clsx": "^2.0.0"
|
||||
},
|
||||
|
|
@ -4113,15 +4113,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/interactions": {
|
||||
"version": "3.25.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.1.tgz",
|
||||
"integrity": "sha512-ntLrlgqkmZupbbjekz3fE/n3eQH2vhncx8gUp0+N+GttKWevx7jos11JUBjnJwb1RSOPgRUFcrluOqBp0VgcfQ==",
|
||||
"version": "3.25.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.2.tgz",
|
||||
"integrity": "sha512-BWyZXBT4P17b9C9HfOIT2glDFMH9nUCfQF7vZ5FEeXNBudH/8OcSbzyBUG4Dg3XPtkOem5LP59ocaizkl32Tvg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/ssr": "^3.9.8",
|
||||
"@react-aria/utils": "^3.29.0",
|
||||
"@react-stately/flags": "^3.1.1",
|
||||
"@react-types/shared": "^3.29.1",
|
||||
"@react-aria/ssr": "^3.9.9",
|
||||
"@react-aria/utils": "^3.29.1",
|
||||
"@react-stately/flags": "^3.1.2",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@swc/helpers": "^0.5.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
|
@ -4130,9 +4130,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/ssr": {
|
||||
"version": "3.9.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.8.tgz",
|
||||
"integrity": "sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw==",
|
||||
"version": "3.9.9",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz",
|
||||
"integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
|
|
@ -4145,15 +4145,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/utils": {
|
||||
"version": "3.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.0.tgz",
|
||||
"integrity": "sha512-jSOrZimCuT1iKNVlhjIxDkAhgF7HSp3pqyT6qjg/ZoA0wfqCi/okmrMPiWSAKBnkgX93N8GYTLT3CIEO6WZe9Q==",
|
||||
"version": "3.29.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz",
|
||||
"integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/ssr": "^3.9.8",
|
||||
"@react-stately/flags": "^3.1.1",
|
||||
"@react-stately/utils": "^3.10.6",
|
||||
"@react-types/shared": "^3.29.1",
|
||||
"@react-aria/ssr": "^3.9.9",
|
||||
"@react-stately/flags": "^3.1.2",
|
||||
"@react-stately/utils": "^3.10.7",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@swc/helpers": "^0.5.0",
|
||||
"clsx": "^2.0.0"
|
||||
},
|
||||
|
|
@ -4163,18 +4163,18 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-stately/flags": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.1.tgz",
|
||||
"integrity": "sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg==",
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz",
|
||||
"integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-stately/utils": {
|
||||
"version": "3.10.6",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.6.tgz",
|
||||
"integrity": "sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA==",
|
||||
"version": "3.10.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz",
|
||||
"integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
|
|
@ -4184,9 +4184,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-types/shared": {
|
||||
"version": "3.29.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.29.1.tgz",
|
||||
"integrity": "sha512-KtM+cDf2CXoUX439rfEhbnEdAgFZX20UP2A35ypNIawR7/PFFPjQDWyA2EnClCcW/dLWJDEPX2U8+EJff8xqmQ==",
|
||||
"version": "3.30.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz",
|
||||
"integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==",
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
|
||||
|
|
@ -4975,9 +4975,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.29.tgz",
|
||||
"integrity": "sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.31.tgz",
|
||||
"integrity": "sha512-mAby9aUnKRjMEA7v8cVZS9Ah4duoRBnX7X6r5qrhTxErx+68MoY1TPrVwj/66/SWN3Bl+jijqAqoB8Qx0QE34A==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
|
|
@ -4993,16 +4993,16 @@
|
|||
"url": "https://opencollective.com/swc"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@swc/core-darwin-arm64": "1.11.29",
|
||||
"@swc/core-darwin-x64": "1.11.29",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.11.29",
|
||||
"@swc/core-linux-arm64-gnu": "1.11.29",
|
||||
"@swc/core-linux-arm64-musl": "1.11.29",
|
||||
"@swc/core-linux-x64-gnu": "1.11.29",
|
||||
"@swc/core-linux-x64-musl": "1.11.29",
|
||||
"@swc/core-win32-arm64-msvc": "1.11.29",
|
||||
"@swc/core-win32-ia32-msvc": "1.11.29",
|
||||
"@swc/core-win32-x64-msvc": "1.11.29"
|
||||
"@swc/core-darwin-arm64": "1.11.31",
|
||||
"@swc/core-darwin-x64": "1.11.31",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.11.31",
|
||||
"@swc/core-linux-arm64-gnu": "1.11.31",
|
||||
"@swc/core-linux-arm64-musl": "1.11.31",
|
||||
"@swc/core-linux-x64-gnu": "1.11.31",
|
||||
"@swc/core-linux-x64-musl": "1.11.31",
|
||||
"@swc/core-win32-arm64-msvc": "1.11.31",
|
||||
"@swc/core-win32-ia32-msvc": "1.11.31",
|
||||
"@swc/core-win32-x64-msvc": "1.11.31"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@swc/helpers": ">=0.5.17"
|
||||
|
|
@ -5014,9 +5014,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-arm64": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.29.tgz",
|
||||
"integrity": "sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.31.tgz",
|
||||
"integrity": "sha512-NTEaYOts0OGSbJZc0O74xsji+64JrF1stmBii6D5EevWEtrY4wlZhm8SiP/qPrOB+HqtAihxWIukWkP2aSdGSQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -5031,9 +5031,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-x64": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.29.tgz",
|
||||
"integrity": "sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.31.tgz",
|
||||
"integrity": "sha512-THSGaSwT96JwXDwuXQ6yFBbn+xDMdyw7OmBpnweAWsh5DhZmQkALEm1DgdQO3+rrE99MkmzwAfclc0UmYro/OA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -5048,9 +5048,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm-gnueabihf": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.29.tgz",
|
||||
"integrity": "sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.31.tgz",
|
||||
"integrity": "sha512-laKtQFnW7KHgE57Hx32os2SNAogcuIDxYE+3DYIOmDMqD7/1DCfJe6Rln2N9WcOw6HuDbDpyQavIwZNfSAa8vQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
|
@ -5065,9 +5065,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-gnu": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.29.tgz",
|
||||
"integrity": "sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.31.tgz",
|
||||
"integrity": "sha512-T+vGw9aPE1YVyRxRr1n7NAdkbgzBzrXCCJ95xAZc/0+WUwmL77Z+js0J5v1KKTRxw4FvrslNCOXzMWrSLdwPSA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -5082,9 +5082,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-musl": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.29.tgz",
|
||||
"integrity": "sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.31.tgz",
|
||||
"integrity": "sha512-Mztp5NZkyd5MrOAG+kl+QSn0lL4Uawd4CK4J7wm97Hs44N9DHGIG5nOz7Qve1KZo407Y25lTxi/PqzPKHo61zQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -5099,9 +5099,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-gnu": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.29.tgz",
|
||||
"integrity": "sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.31.tgz",
|
||||
"integrity": "sha512-DDVE0LZcXOWwOqFU1Xi7gdtiUg3FHA0vbGb3trjWCuI1ZtDZHEQYL4M3/2FjqKZtIwASrDvO96w91okZbXhvMg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -5116,9 +5116,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-musl": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.29.tgz",
|
||||
"integrity": "sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.31.tgz",
|
||||
"integrity": "sha512-mJA1MzPPRIfaBUHZi0xJQ4vwL09MNWDeFtxXb0r4Yzpf0v5Lue9ymumcBPmw/h6TKWms+Non4+TDquAsweuKSw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -5133,9 +5133,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-arm64-msvc": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.29.tgz",
|
||||
"integrity": "sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.31.tgz",
|
||||
"integrity": "sha512-RdtakUkNVAb/FFIMw3LnfNdlH1/ep6KgiPDRlmyUfd0WdIQ3OACmeBegEFNFTzi7gEuzy2Yxg4LWf4IUVk8/bg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -5150,9 +5150,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-ia32-msvc": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.29.tgz",
|
||||
"integrity": "sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.31.tgz",
|
||||
"integrity": "sha512-hErXdCGsg7swWdG1fossuL8542I59xV+all751mYlBoZ8kOghLSKObGQTkBbuNvc0sUKWfWg1X0iBuIhAYar+w==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
|
|
@ -5167,9 +5167,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-x64-msvc": {
|
||||
"version": "1.11.29",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.29.tgz",
|
||||
"integrity": "sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==",
|
||||
"version": "1.11.31",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.31.tgz",
|
||||
"integrity": "sha512-5t7SGjUBMMhF9b5j17ml/f/498kiBJNf4vZFNM421UGUEETdtjPN9jZIuQrowBkoFGJTCVL/ECM4YRtTH30u/A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -5200,9 +5200,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@swc/types": {
|
||||
"version": "0.1.21",
|
||||
"resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz",
|
||||
"integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==",
|
||||
"version": "0.1.22",
|
||||
"resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.22.tgz",
|
||||
"integrity": "sha512-D13mY/ZA4PPEFSy6acki9eBT/3WgjMoRqNcdpIvjaYLQ44Xk5BdaL7UkDxAh6Z9UOe7tCCp67BVmZCojYp9owg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
|
|
@ -5286,9 +5286,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tanstack/query-core": {
|
||||
"version": "5.80.5",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.5.tgz",
|
||||
"integrity": "sha512-kFWXdQOUcjL/Ugk3GrI9eMuG3DsKBGaLIgyOLekR2UOrRrJgkLgPUNzZ10i8FCkfi4SgLABhOtQhx1HjoB9EZQ==",
|
||||
"version": "5.80.6",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.6.tgz",
|
||||
"integrity": "sha512-nl7YxT/TAU+VTf+e2zTkObGTyY8YZBMnbgeA1ee66lIVqzKlYursAII6z5t0e6rXgwUMJSV4dshBTNacNpZHbQ==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
|
|
@ -5296,12 +5296,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tanstack/react-query": {
|
||||
"version": "5.80.5",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.5.tgz",
|
||||
"integrity": "sha512-C0d+pvIahk6fJK5bXxyf36r9Ft6R9O0mwl781CjBrYGRJc76XRJcKhkVpxIo68cjMy3i47gd4O1EGooAke/OCQ==",
|
||||
"version": "5.80.6",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.6.tgz",
|
||||
"integrity": "sha512-izX+5CnkpON3NQGcEm3/d7LfFQNo9ZpFtX2QsINgCYK9LT2VCIdi8D3bMaMSNhrAJCznRoAkFic76uvLroALBw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@tanstack/query-core": "5.80.5"
|
||||
"@tanstack/query-core": "5.80.6"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
|
|
@ -5767,9 +5767,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
|
||||
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/geojson": {
|
||||
|
|
@ -5928,12 +5928,12 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.17.57",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.57.tgz",
|
||||
"integrity": "sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==",
|
||||
"version": "20.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.0.tgz",
|
||||
"integrity": "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~6.19.2"
|
||||
"undici-types": "~6.21.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/parse-json": {
|
||||
|
|
@ -8062,9 +8062,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/effect": {
|
||||
"version": "3.16.3",
|
||||
"resolved": "https://registry.npmjs.org/effect/-/effect-3.16.3.tgz",
|
||||
"integrity": "sha512-SWndb1UavNWvet1+hnkU4qp3EHtnmDKhUeP14eB+7vf/2nCFlM77/oIjdDeZctveibNjE65P9H/sBBmF0NTy/w==",
|
||||
"version": "3.16.4",
|
||||
"resolved": "https://registry.npmjs.org/effect/-/effect-3.16.4.tgz",
|
||||
"integrity": "sha512-zJo5MRPEMROLjTHyrOJs0PUeEnRLy0ABwum3+HWlP8Y9LNF+NjipIRldVAcjSVQpJ7vY/OEGBxzw0USPzTfWag==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@standard-schema/spec": "^1.0.0",
|
||||
|
|
@ -8514,9 +8514,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/esrap": {
|
||||
"version": "1.4.6",
|
||||
"resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz",
|
||||
"integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==",
|
||||
"version": "1.4.7",
|
||||
"resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.7.tgz",
|
||||
"integrity": "sha512-0ZxW6guTF/AeKeKi7he93lmgv7Hx7giD1tBrOeVqkqsZGQJd2/kfnL7LdIsr9FT/AtkBK9XeDTov+gxprBqdEg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
|
|
@ -9007,14 +9007,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
|
||||
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
||||
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"es-set-tostringtag": "^2.1.0",
|
||||
"hasown": "^2.0.2",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -14981,6 +14982,12 @@
|
|||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup/node_modules/@types/estree": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
|
||||
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/rrdom": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/rrdom/-/rrdom-0.1.7.tgz",
|
||||
|
|
@ -16352,9 +16359,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "6.19.8",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
||||
"version": "6.21.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/unified": {
|
||||
|
|
@ -17885,9 +17892,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/zod": {
|
||||
"version": "3.25.51",
|
||||
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.51.tgz",
|
||||
"integrity": "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==",
|
||||
"version": "3.25.55",
|
||||
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.55.tgz",
|
||||
"integrity": "sha512-219huNnkSLQnLsQ3uaRjXsxMrVm5C9W3OOpEVt2k5tvMKuA8nBSu38e0B//a+he9Iq2dvmk2VyYVlHqiHa4YBA==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
|
|
|
|||
338
src/frontend/src/icons/Docling/Docling.jsx
Normal file
338
src/frontend/src/icons/Docling/Docling.jsx
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
const SvgDocling = (props) => (
|
||||
<svg
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 1024 1024"
|
||||
style={{
|
||||
fillRule: "evenodd",
|
||||
clipRule: "evenodd",
|
||||
strokeLinecap: "round",
|
||||
strokeLinejoin: "round",
|
||||
strokeMiterlimit: 1.5,
|
||||
}}
|
||||
{...props}
|
||||
>
|
||||
<g id="Docling" transform="matrix(1.07666,0,0,1.07666,-35.9018,-84.1562)">
|
||||
<g id="Outline" transform="matrix(1,0,0,1,-0.429741,55.0879)">
|
||||
<path
|
||||
d="M394.709,69.09C417.34,35.077 467.97,30.178 478.031,55.609C486.35,55.043 494.726,54.701 503.158,54.589C533.157,45.238 560.496,47.419 584.65,60.732C800.941,96.66 966.069,284.814 966.069,511.232C966.069,763.284 761.435,967.918 509.383,967.918C433.692,967.918 362.277,949.464 299.385,916.808L242.3,931.993C203.092,943.242 187.715,928.369 208.575,891.871C208.935,891.24 216.518,879.37 223.997,867.677C119.604,783.975 52.698,655.355 52.698,511.232C52.698,298.778 198.086,120.013 394.709,69.09Z"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<g id="Color" transform="matrix(1.02317,0,0,1.02317,-11.55,-17.8333)">
|
||||
<path
|
||||
d="M284.8,894.232L179.735,783.955L130.222,645.203L125.538,504.726L185.211,385.816C209.006,322.738 249.951,278.973 302.281,248.028L406.684,203.333L413.483,175.767L436.637,152.428L451.408,153.312L457.726,183.183L485.164,165.379L526.92,159.699L557.014,177.545L612.652,211.018C679.009,226.066 740.505,264.146 797.138,325.26L862.813,423.477L891.583,560.826L883.273,683.32L814.268,809.924L734.431,894.384L644.495,926.906L497.146,954.121L361.064,940.647L284.8,894.232Z"
|
||||
style={{ fill: "url(#_Linear1)" }}
|
||||
/>
|
||||
<path
|
||||
d="M699.932,887.255L634.427,825.291L597.884,782.352L594.906,738.956L610.14,709.396L643.207,699.954L685,710.111L730.425,736.425L765.204,778.79L775.166,849.531L719.381,894.082L699.932,887.255Z"
|
||||
style={{ fill: "url(#_Linear2)" }}
|
||||
/>
|
||||
<g transform="matrix(-0.765945,0,0,1,839.727,5.47434)">
|
||||
<clipPath id="_clip3">
|
||||
<path d="M699.932,887.255L634.427,825.291L597.884,782.352L594.906,738.956L610.14,709.396L643.207,699.954L685,710.111L730.425,736.425L765.204,778.79L775.166,849.531L719.381,894.082L699.932,887.255Z" />
|
||||
</clipPath>
|
||||
<g clipPath="url(#_clip3)">
|
||||
<g transform="matrix(-1.18516,0,0,0.907769,1039.04,88.3496)">
|
||||
<use
|
||||
xlinkHref="#_Image4"
|
||||
x="223.969"
|
||||
y="674.21"
|
||||
width="152.098px"
|
||||
height="213.852px"
|
||||
transform="matrix(0.994105,0,0,0.999308,0,0)"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
d="M311.699,713.521C189.178,639.091 164.299,526.77 191.824,394.113L135.136,476.434L122.004,547.53C143.022,614.014 174.522,676.199 225.005,730.598C210.601,754.156 201.894,776.601 197.955,798.114L245.803,841.67C247.274,812.1 254.934,783.047 270.614,754.664L311.699,713.521Z"
|
||||
style={{ fillOpacity: 0.22 }}
|
||||
/>
|
||||
<g transform="matrix(-1,0,0,1,1022.04,2.74442)">
|
||||
<path
|
||||
d="M311.699,713.521C189.178,639.091 164.299,526.77 191.824,394.113L135.136,476.434L122.004,547.53C143.022,614.014 174.522,676.199 225.005,730.598C210.601,754.156 201.894,776.601 197.955,798.114L245.803,841.67C247.274,812.1 254.934,783.047 270.614,754.664L311.699,713.521Z"
|
||||
style={{ fillOpacity: 0.22 }}
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
style={{ fill: "url(#_Linear5)" }}
|
||||
d="M354.92,650.818L420.009,663.185L493.368,666.379L554.826,665.251L620.19,658.511L658.169,651.428L671.428,644.802L673.265,627.093L659.898,611.845L625.422,609.244L599.275,591.212L568.632,556.79L542.9,534.336L515.052,528.253L480.412,532.71L455.2,552.337L428.514,578.155L405.312,599.359L374.228,612.097L355.342,614.456L340.75,630.308L341.568,645.341L354.92,650.818Z"
|
||||
/>
|
||||
<path
|
||||
style={{ fill: "url(#_Linear6)" }}
|
||||
d="M257.168,949.32L317.434,876.747L364.928,810.6L384.1,743.934L378.759,714.719L376.844,685.849L374.836,659.954L448.734,664.2L511.462,667.602L571.339,665.091L632.796,658.836L648.232,656.882L649.937,697.808L608.105,717.702L598.45,738.594L592.286,761.642L604.743,796.309L639.595,825.803L649.872,840.757L558.219,895.152L502.124,907.569L425.781,923.496L333.29,931.298L286.269,936.907L257.168,949.32Z"
|
||||
/>
|
||||
<g transform="matrix(1,0,0,1.30081,-1.77636e-15,-196.488)">
|
||||
<path
|
||||
d="M374.165,685.268C463.946,706.599 553.728,707.491 643.51,688.593L641.903,653.199C549.263,671.731 459.645,672.22 373.059,654.611L374.165,685.268Z"
|
||||
style={{ fillOpacity: 0.18 }}
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
d="M459.633,571.457C476.7,536.091 530.064,535.913 553.1,568.767C520.703,551.407 489.553,552.374 459.633,571.457Z"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
<g transform="matrix(1,0,0,1,0.223468,-2.61949)">
|
||||
<path
|
||||
d="M355.3,267.232C500.64,173.156 720.699,241.362 793.691,423.582C766.716,384.84 735.725,357.078 697.53,349.014L717.306,335.248C698.537,321.49 675.794,320.957 651.039,327.119C652.235,315.768 658.995,306.991 674.188,302.115C641.864,287.427 617.356,289.473 596.258,298.818C597.049,286.116 605.827,278.087 620.068,273.254C589.192,267.477 564.13,270.926 544.651,283.232C545.822,271.831 550.709,260.943 560.913,250.79C517.498,257.095 492.995,267.925 482.892,282.202C477.311,269.499 477.274,257.221 487.625,245.739C439.161,252.932 421.555,265.094 410.355,278.286C407.697,269.01 407.705,260.632 410.853,253.316C389.633,254.773 372.178,260.663 355.3,267.232Z"
|
||||
style={{ fill: "rgb(255,213,95)" }}
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
d="M475.656,209.175C479.639,175.037 503.437,173.299 532.412,180.026C507.242,183.404 486.969,195.251 473.705,219.215L475.656,209.175Z"
|
||||
style={{ fill: "rgb(255,215,101)" }}
|
||||
/>
|
||||
<g transform="matrix(0.114323,-0.655229,0.82741,0.144365,224.632,497.317)">
|
||||
<path
|
||||
d="M475.656,209.175C479.639,175.037 503.437,173.299 532.412,180.026C507.242,183.404 486.969,195.251 473.705,219.215L475.656,209.175Z"
|
||||
style={{ fill: "rgb(255,215,101)" }}
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(1.6739,1.15217e-16,-1.15217e-16,-0.733075,-341.46,1039.77)">
|
||||
<path
|
||||
d="M447.449,560.911C468.179,536.963 546.237,539.305 565.638,560.831C533.166,555.541 477.296,553.494 447.449,560.911Z"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
d="M348.201,622.341C395.549,653.534 622.351,660.854 661.936,616.729L677.568,633.834L667.044,650.308L557.802,667.518L498.074,670.562L446.718,666.416L391.404,658.406L348.154,652.501L340.161,637.119L348.201,622.341Z"
|
||||
style={{ fill: "rgb(199,68,6)" }}
|
||||
/>
|
||||
</g>
|
||||
<g
|
||||
id="Black-outline"
|
||||
transform="matrix(1.02317,0,0,1.02317,-11.55,-17.8333)"
|
||||
>
|
||||
<path
|
||||
d="M373.389,657.919C376.285,676.334 377.04,695.016 375.326,714.008"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "15.73px" }}
|
||||
/>
|
||||
<path
|
||||
d="M645.931,654.961C646.158,669.958 647.22,684.853 648.975,699.661"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "15.73px" }}
|
||||
/>
|
||||
<path d="M290.084,534.662C276.554,533.535 264.892,530.024 254.279,525.175C276.732,555.341 305.316,569.76 338.631,572.029L290.084,534.662Z" />
|
||||
<g transform="matrix(0.94177,0,0,0.94909,28.8868,3.79501)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412" />
|
||||
</g>
|
||||
<g transform="matrix(0.112099,0.0552506,-0.0673118,0.136571,455.367,509.409)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412" />
|
||||
</g>
|
||||
<g transform="matrix(-0.112099,0.0552506,0.0673118,0.136571,560.529,509.492)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412" />
|
||||
</g>
|
||||
<g transform="matrix(-1,0,0,1,1013.33,-1.15187)">
|
||||
<path d="M290.084,534.662C276.554,533.535 264.892,530.024 254.279,525.175C276.732,555.341 305.316,569.76 338.631,572.029L290.084,534.662Z" />
|
||||
</g>
|
||||
<g transform="matrix(-0.94177,0,0,0.94909,984.44,2.64314)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412" />
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1.9047,-5.57346)">
|
||||
<path
|
||||
d="M277.021,489.604C279.828,554.545 355.855,583.508 405.306,537.851C354.458,599.537 263.881,560.914 277.021,489.604Z"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(-1,0,0,1,1011.43,-5.7284)">
|
||||
<path
|
||||
d="M277.021,489.604C279.828,554.545 355.855,583.508 405.306,537.851C354.458,599.537 263.881,560.914 277.021,489.604Z"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(0.973815,0,0,1.00246,4.71761,-0.508759)">
|
||||
<path
|
||||
d="M407.22,206.891C107.655,339.384 134.447,630.03 314.615,708.305"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "29.39px" }}
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(-0.973815,0,0,1.00246,1006.67,-1.31695)">
|
||||
<path
|
||||
d="M461.559,196.756C119.768,256.762 111.059,642.544 320.305,711.486"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "29.39px" }}
|
||||
/>
|
||||
</g>
|
||||
<g id="vector-duck">
|
||||
<path
|
||||
d="M240.912,850.71C248.043,740.231 325.609,685.992 371.268,715.193C386.487,724.926 392.506,757.72 358.575,816.753C327.005,871.68 300.465,894.596 288.329,903.447"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "21.79px" }}
|
||||
/>
|
||||
<path
|
||||
d="M638.382,843.426C427.991,964.695 389.022,902.942 251.512,947.641L307.759,889.573"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "15.73px" }}
|
||||
/>
|
||||
<path
|
||||
d="M770.991,853.754C779.364,764.998 730.67,727.923 666.385,704.966C629.568,691.819 580.483,723.886 595.974,772.596C606.285,805.016 650.54,839.029 707.786,886.778"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "21.79px" }}
|
||||
/>
|
||||
<g transform="matrix(1,0,0,1,-1.87208,0.908099)">
|
||||
<path d="M603.287,772.415C614.237,757.963 627.553,750.285 642.878,748.352C628.356,760.968 617.23,775.676 620.632,799.336C635.815,785.15 650.367,779.457 664.396,780.801C651.715,790.7 639.329,803.279 641.039,818.089C641.247,819.891 647.043,823.996 647.595,825.837C659.897,816.37 672.867,811.065 689.234,809.472C676.577,822.659 668.021,834.011 674.478,848.729L664.333,847.825L625.643,812.604L603.629,786.218L603.287,772.415Z" />
|
||||
</g>
|
||||
<g transform="matrix(-0.969851,0.2437,0.2437,0.969851,773.329,-138.212)">
|
||||
<path d="M603.287,772.415C614.237,757.963 627.553,750.285 642.878,748.352C628.356,760.968 617.23,775.676 620.632,799.336C635.815,785.15 650.367,779.457 664.396,780.801C651.715,790.7 639.329,803.279 641.039,818.089C641.247,819.891 647.043,823.996 647.595,825.837C659.897,816.37 672.867,811.065 689.234,809.472C676.577,822.659 668.021,834.011 674.478,848.729L664.333,847.825L625.643,812.604L603.629,786.218L603.287,772.415Z" />
|
||||
</g>
|
||||
<path
|
||||
d="M511.787,670.044C461.061,671.835 411.878,662.84 361.322,653.92C329.071,648.229 335.56,616.432 361.693,615.181C391.498,613.754 411.83,601.737 437.593,569.084C459.063,541.872 482.443,528.143 506.834,529.767"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "15.73px" }}
|
||||
/>
|
||||
<g transform="matrix(-1,0,0,1,1014.44,-0.213451)">
|
||||
<path
|
||||
d="M511.787,670.044C461.061,671.835 411.878,662.84 361.322,653.92C329.071,648.229 335.56,616.432 361.693,615.181C391.498,613.754 411.83,601.737 437.593,569.084C459.063,541.872 482.443,528.143 506.834,529.767"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "15.73px" }}
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.4586,0,0,2.5497,-444.527,-690.434)">
|
||||
<ellipse
|
||||
cx="312.566"
|
||||
cy="450.751"
|
||||
rx="10.63"
|
||||
ry="10.48"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(2.4586,0,0,2.5497,-127.75,-690.991)">
|
||||
<ellipse
|
||||
cx="312.566"
|
||||
cy="450.751"
|
||||
rx="10.63"
|
||||
ry="10.48"
|
||||
style={{ fill: "white" }}
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
d="M505.738,698.061L578.879,713.989"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M422.781,709.6L568.438,743.041"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M419.941,738.409L565.688,772.989"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M408.6,787.08L510.634,810.689"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M397.571,815.956L500.93,840.219"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M386.763,844.926L454.065,861.974"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "12.1px" }}
|
||||
/>
|
||||
<path
|
||||
d="M459.169,919.169C512.194,898.262 539.171,867.298 535.241,824.402C568.052,818.31 598.499,817.058 625.84,822.165"
|
||||
style={{ fill: "none", stroke: "black", strokeWidth: "16.95px" }}
|
||||
/>
|
||||
<path d="M366.219,241.106C389.605,229.261 413.371,220.601 438.247,217.5C416.795,202.419 418.72,174.582 444.22,162.47C442.086,178.175 447.633,193.354 464.772,207.738C468.721,167.57 530.015,162.087 545.674,184.112C526.45,189.314 513.082,197.344 504.566,207.717C522.403,208.119 540.706,207.86 556.2,210.609L566.935,168.471C536.388,146.208 495.718,142.166 464.65,166.705C467.703,133.264 419.536,128.364 404.624,178.47L366.219,241.106Z" />
|
||||
<path d="M392.617,924.576C428.953,936.938 467.84,943.636 508.258,943.636C708.944,943.636 871.876,778.49 871.876,575.076C871.876,382.463 725.788,224.162 539.898,207.895L554.137,173.696L554.485,168.187C757.218,191.602 914.895,366.003 914.895,577.383C914.895,804.698 732.549,989.249 507.949,989.249C435.381,989.249 367.223,969.983 308.199,936.232L392.617,924.576ZM279.206,917.988C171.663,843.819 101.002,718.887 101.002,577.383C101.002,383.006 234.333,219.898 413.398,176.712L424.375,216.389C264.082,254.803 144.64,400.913 144.64,575.076C144.64,703.735 209.822,817.086 308.514,883.023L279.206,917.988Z" />
|
||||
<path d="M714.938,895.223L647.287,836.693L616.06,855.308L549.158,889.412L459.845,919.216L390.213,928.828L429.291,950.712L535.832,960.1L586.137,952.591L662.254,931.896L714.938,895.223Z" />
|
||||
<path
|
||||
style={{ fill: "url(#_Linear7)" }}
|
||||
d="M423.538,929.39C509.164,917.593 580.815,890.465 640.827,850.566C635.677,886.828 622.639,918.218 594.006,939.977C530.254,930.953 474.955,928.632 423.538,929.39Z"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id="_Linear1"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-52.3962,375.121,-375.121,-52.3962,471.134,384.463)"
|
||||
>
|
||||
<stop
|
||||
offset="0"
|
||||
style={{ stopColor: "rgb(255,176,44)", stopOpacity: 1 }}
|
||||
/>
|
||||
<stop
|
||||
offset="1"
|
||||
style={{ stopColor: "rgb(255,73,2)", stopOpacity: 1 }}
|
||||
/>
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="_Linear2"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(28.6198,-84.8913,84.8913,28.6198,647.831,831.55)"
|
||||
>
|
||||
<stop
|
||||
offset="0"
|
||||
style={{ stopColor: "rgb(255,73,2)", stopOpacity: 1 }}
|
||||
/>
|
||||
<stop
|
||||
offset="1"
|
||||
style={{ stopColor: "rgb(255,176,44)", stopOpacity: 1 }}
|
||||
/>
|
||||
</linearGradient>
|
||||
<image
|
||||
id="_Image4"
|
||||
width="153px"
|
||||
height="214px"
|
||||
xlinkHref="data:image/jpeg;base64,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"
|
||||
/>
|
||||
<linearGradient
|
||||
id="_Linear5"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-39.3403,137.423,-137.423,-39.3403,545.523,573.246)"
|
||||
>
|
||||
<stop
|
||||
offset="0"
|
||||
style={{ stopColor: "rgb(255,200,41)", stopOpacity: 1 }}
|
||||
/>
|
||||
<stop
|
||||
offset="1"
|
||||
style={{ stopColor: "rgb(255,73,2)", stopOpacity: 1 }}
|
||||
/>
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="_Linear6"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.01113,-68.2054,68.2054,1.01113,482.996,741.463)"
|
||||
>
|
||||
<stop offset="0" style={{ stopColor: "white", stopOpacity: 1 }} />
|
||||
<stop
|
||||
offset="1"
|
||||
style={{ stopColor: "rgb(179,179,179)", stopOpacity: 1 }}
|
||||
/>
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="_Linear7"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-7.13599,-34.117,34.117,-7.13599,578.793,922.144)"
|
||||
>
|
||||
<stop
|
||||
offset="0"
|
||||
style={{ stopColor: "rgb(164,164,164)", stopOpacity: 1 }}
|
||||
/>
|
||||
<stop
|
||||
offset="1"
|
||||
style={{ stopColor: "rgb(106,106,106)", stopOpacity: 1 }}
|
||||
/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default SvgDocling;
|
||||
116
src/frontend/src/icons/Docling/Docling.svg
Normal file
116
src/frontend/src/icons/Docling/Docling.svg
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
||||
<g id="Docling" transform="matrix(1.07666,0,0,1.07666,-35.9018,-84.1562)">
|
||||
<g id="Outline" transform="matrix(1,0,0,1,-0.429741,55.0879)">
|
||||
<path d="M394.709,69.09C417.34,35.077 467.97,30.178 478.031,55.609C486.35,55.043 494.726,54.701 503.158,54.589C533.157,45.238 560.496,47.419 584.65,60.732C800.941,96.66 966.069,284.814 966.069,511.232C966.069,763.284 761.435,967.918 509.383,967.918C433.692,967.918 362.277,949.464 299.385,916.808L242.3,931.993C203.092,943.242 187.715,928.369 208.575,891.871C208.935,891.24 216.518,879.37 223.997,867.677C119.604,783.975 52.698,655.355 52.698,511.232C52.698,298.778 198.086,120.013 394.709,69.09Z" style="fill:white;"/>
|
||||
</g>
|
||||
<g id="Color" transform="matrix(1.02317,0,0,1.02317,-11.55,-17.8333)">
|
||||
<path d="M284.8,894.232L179.735,783.955L130.222,645.203L125.538,504.726L185.211,385.816C209.006,322.738 249.951,278.973 302.281,248.028L406.684,203.333L413.483,175.767L436.637,152.428L451.408,153.312L457.726,183.183L485.164,165.379L526.92,159.699L557.014,177.545L612.652,211.018C679.009,226.066 740.505,264.146 797.138,325.26L862.813,423.477L891.583,560.826L883.273,683.32L814.268,809.924L734.431,894.384L644.495,926.906L497.146,954.121L361.064,940.647L284.8,894.232Z" style="fill:url(#_Linear1);"/>
|
||||
<path d="M699.932,887.255L634.427,825.291L597.884,782.352L594.906,738.956L610.14,709.396L643.207,699.954L685,710.111L730.425,736.425L765.204,778.79L775.166,849.531L719.381,894.082L699.932,887.255Z" style="fill:url(#_Linear2);"/>
|
||||
<g transform="matrix(-0.765945,0,0,1,839.727,5.47434)">
|
||||
<clipPath id="_clip3">
|
||||
<path d="M699.932,887.255L634.427,825.291L597.884,782.352L594.906,738.956L610.14,709.396L643.207,699.954L685,710.111L730.425,736.425L765.204,778.79L775.166,849.531L719.381,894.082L699.932,887.255Z"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#_clip3)">
|
||||
<g transform="matrix(-1.18516,0,0,0.907769,1039.04,88.3496)">
|
||||
<use xlink:href="#_Image4" x="223.969" y="674.21" width="152.098px" height="213.852px" transform="matrix(0.994105,0,0,0.999308,0,0)"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M311.699,713.521C189.178,639.091 164.299,526.77 191.824,394.113L135.136,476.434L122.004,547.53C143.022,614.014 174.522,676.199 225.005,730.598C210.601,754.156 201.894,776.601 197.955,798.114L245.803,841.67C247.274,812.1 254.934,783.047 270.614,754.664L311.699,713.521Z" style="fill-opacity:0.22;"/>
|
||||
<g transform="matrix(-1,0,0,1,1022.04,2.74442)">
|
||||
<path d="M311.699,713.521C189.178,639.091 164.299,526.77 191.824,394.113L135.136,476.434L122.004,547.53C143.022,614.014 174.522,676.199 225.005,730.598C210.601,754.156 201.894,776.601 197.955,798.114L245.803,841.67C247.274,812.1 254.934,783.047 270.614,754.664L311.699,713.521Z" style="fill-opacity:0.22;"/>
|
||||
</g>
|
||||
<path d="M354.92,650.818L420.009,663.185L493.368,666.379L554.826,665.251L620.19,658.511L658.169,651.428L671.428,644.802L673.265,627.093L659.898,611.845L625.422,609.244L599.275,591.212L568.632,556.79L542.9,534.336L515.052,528.253L480.412,532.71L455.2,552.337L428.514,578.155L405.312,599.359L374.228,612.097L355.342,614.456L340.75,630.308L341.568,645.341L354.92,650.818Z" style="fill:url(#_Linear5);"/>
|
||||
<path d="M257.168,949.32L317.434,876.747L364.928,810.6L384.1,743.934L378.759,714.719L376.844,685.849L374.836,659.954L448.734,664.2L511.462,667.602L571.339,665.091L632.796,658.836L648.232,656.882L649.937,697.808L608.105,717.702L598.45,738.594L592.286,761.642L604.743,796.309L639.595,825.803L649.872,840.757L558.219,895.152L502.124,907.569L425.781,923.496L333.29,931.298L286.269,936.907L257.168,949.32Z" style="fill:url(#_Linear6);"/>
|
||||
<g transform="matrix(1,0,0,1.30081,-1.77636e-15,-196.488)">
|
||||
<path d="M374.165,685.268C463.946,706.599 553.728,707.491 643.51,688.593L641.903,653.199C549.263,671.731 459.645,672.22 373.059,654.611L374.165,685.268Z" style="fill-opacity:0.18;"/>
|
||||
</g>
|
||||
<path d="M459.633,571.457C476.7,536.091 530.064,535.913 553.1,568.767C520.703,551.407 489.553,552.374 459.633,571.457Z" style="fill:white;"/>
|
||||
<g transform="matrix(1,0,0,1,0.223468,-2.61949)">
|
||||
<path d="M355.3,267.232C500.64,173.156 720.699,241.362 793.691,423.582C766.716,384.84 735.725,357.078 697.53,349.014L717.306,335.248C698.537,321.49 675.794,320.957 651.039,327.119C652.235,315.768 658.995,306.991 674.188,302.115C641.864,287.427 617.356,289.473 596.258,298.818C597.049,286.116 605.827,278.087 620.068,273.254C589.192,267.477 564.13,270.926 544.651,283.232C545.822,271.831 550.709,260.943 560.913,250.79C517.498,257.095 492.995,267.925 482.892,282.202C477.311,269.499 477.274,257.221 487.625,245.739C439.161,252.932 421.555,265.094 410.355,278.286C407.697,269.01 407.705,260.632 410.853,253.316C389.633,254.773 372.178,260.663 355.3,267.232Z" style="fill:rgb(255,213,95);"/>
|
||||
</g>
|
||||
<path d="M475.656,209.175C479.639,175.037 503.437,173.299 532.412,180.026C507.242,183.404 486.969,195.251 473.705,219.215L475.656,209.175Z" style="fill:rgb(255,215,101);"/>
|
||||
<g transform="matrix(0.114323,-0.655229,0.82741,0.144365,224.632,497.317)">
|
||||
<path d="M475.656,209.175C479.639,175.037 503.437,173.299 532.412,180.026C507.242,183.404 486.969,195.251 473.705,219.215L475.656,209.175Z" style="fill:rgb(255,215,101);"/>
|
||||
</g>
|
||||
<g transform="matrix(1.6739,1.15217e-16,-1.15217e-16,-0.733075,-341.46,1039.77)">
|
||||
<path d="M447.449,560.911C468.179,536.963 546.237,539.305 565.638,560.831C533.166,555.541 477.296,553.494 447.449,560.911Z" style="fill:white;"/>
|
||||
</g>
|
||||
<path d="M348.201,622.341C395.549,653.534 622.351,660.854 661.936,616.729L677.568,633.834L667.044,650.308L557.802,667.518L498.074,670.562L446.718,666.416L391.404,658.406L348.154,652.501L340.161,637.119L348.201,622.341Z" style="fill:rgb(199,68,6);"/>
|
||||
</g>
|
||||
<g id="Black-outline" serif:id="Black outline" transform="matrix(1.02317,0,0,1.02317,-11.55,-17.8333)">
|
||||
<path d="M373.389,657.919C376.285,676.334 377.04,695.016 375.326,714.008" style="fill:none;stroke:black;stroke-width:15.73px;"/>
|
||||
<path d="M645.931,654.961C646.158,669.958 647.22,684.853 648.975,699.661" style="fill:none;stroke:black;stroke-width:15.73px;"/>
|
||||
<path d="M290.084,534.662C276.554,533.535 264.892,530.024 254.279,525.175C276.732,555.341 305.316,569.76 338.631,572.029L290.084,534.662Z"/>
|
||||
<g transform="matrix(0.94177,0,0,0.94909,28.8868,3.79501)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412"/>
|
||||
</g>
|
||||
<g transform="matrix(0.112099,0.0552506,-0.0673118,0.136571,455.367,509.409)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.112099,0.0552506,0.0673118,0.136571,560.529,509.492)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412"/>
|
||||
</g>
|
||||
<g transform="matrix(-1,0,0,1,1013.33,-1.15187)">
|
||||
<path d="M290.084,534.662C276.554,533.535 264.892,530.024 254.279,525.175C276.732,555.341 305.316,569.76 338.631,572.029L290.084,534.662Z"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.94177,0,0,0.94909,984.44,2.64314)">
|
||||
<ellipse cx="338.022" cy="510.34" rx="88.911" ry="89.412"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1.9047,-5.57346)">
|
||||
<path d="M277.021,489.604C279.828,554.545 355.855,583.508 405.306,537.851C354.458,599.537 263.881,560.914 277.021,489.604Z" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(-1,0,0,1,1011.43,-5.7284)">
|
||||
<path d="M277.021,489.604C279.828,554.545 355.855,583.508 405.306,537.851C354.458,599.537 263.881,560.914 277.021,489.604Z" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(0.973815,0,0,1.00246,4.71761,-0.508759)">
|
||||
<path d="M407.22,206.891C107.655,339.384 134.447,630.03 314.615,708.305" style="fill:none;stroke:black;stroke-width:29.39px;"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.973815,0,0,1.00246,1006.67,-1.31695)">
|
||||
<path d="M461.559,196.756C119.768,256.762 111.059,642.544 320.305,711.486" style="fill:none;stroke:black;stroke-width:29.39px;"/>
|
||||
</g>
|
||||
<g id="vector-duck" serif:id="vector duck">
|
||||
<path d="M240.912,850.71C248.043,740.231 325.609,685.992 371.268,715.193C386.487,724.926 392.506,757.72 358.575,816.753C327.005,871.68 300.465,894.596 288.329,903.447" style="fill:none;stroke:black;stroke-width:21.79px;"/>
|
||||
<path d="M638.382,843.426C427.991,964.695 389.022,902.942 251.512,947.641L307.759,889.573" style="fill:none;stroke:black;stroke-width:15.73px;"/>
|
||||
<path d="M770.991,853.754C779.364,764.998 730.67,727.923 666.385,704.966C629.568,691.819 580.483,723.886 595.974,772.596C606.285,805.016 650.54,839.029 707.786,886.778" style="fill:none;stroke:black;stroke-width:21.79px;"/>
|
||||
<g transform="matrix(1,0,0,1,-1.87208,0.908099)">
|
||||
<path d="M603.287,772.415C614.237,757.963 627.553,750.285 642.878,748.352C628.356,760.968 617.23,775.676 620.632,799.336C635.815,785.15 650.367,779.457 664.396,780.801C651.715,790.7 639.329,803.279 641.039,818.089C641.247,819.891 647.043,823.996 647.595,825.837C659.897,816.37 672.867,811.065 689.234,809.472C676.577,822.659 668.021,834.011 674.478,848.729L664.333,847.825L625.643,812.604L603.629,786.218L603.287,772.415Z"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.969851,0.2437,0.2437,0.969851,773.329,-138.212)">
|
||||
<path d="M603.287,772.415C614.237,757.963 627.553,750.285 642.878,748.352C628.356,760.968 617.23,775.676 620.632,799.336C635.815,785.15 650.367,779.457 664.396,780.801C651.715,790.7 639.329,803.279 641.039,818.089C641.247,819.891 647.043,823.996 647.595,825.837C659.897,816.37 672.867,811.065 689.234,809.472C676.577,822.659 668.021,834.011 674.478,848.729L664.333,847.825L625.643,812.604L603.629,786.218L603.287,772.415Z"/>
|
||||
</g>
|
||||
<path d="M511.787,670.044C461.061,671.835 411.878,662.84 361.322,653.92C329.071,648.229 335.56,616.432 361.693,615.181C391.498,613.754 411.83,601.737 437.593,569.084C459.063,541.872 482.443,528.143 506.834,529.767" style="fill:none;stroke:black;stroke-width:15.73px;"/>
|
||||
<g transform="matrix(-1,0,0,1,1014.44,-0.213451)">
|
||||
<path d="M511.787,670.044C461.061,671.835 411.878,662.84 361.322,653.92C329.071,648.229 335.56,616.432 361.693,615.181C391.498,613.754 411.83,601.737 437.593,569.084C459.063,541.872 482.443,528.143 506.834,529.767" style="fill:none;stroke:black;stroke-width:15.73px;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.4586,0,0,2.5497,-444.527,-690.434)">
|
||||
<ellipse cx="312.566" cy="450.751" rx="10.63" ry="10.48" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(2.4586,0,0,2.5497,-127.75,-690.991)">
|
||||
<ellipse cx="312.566" cy="450.751" rx="10.63" ry="10.48" style="fill:white;"/>
|
||||
</g>
|
||||
<path d="M505.738,698.061L578.879,713.989" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M422.781,709.6L568.438,743.041" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M419.941,738.409L565.688,772.989" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M408.6,787.08L510.634,810.689" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M397.571,815.956L500.93,840.219" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M386.763,844.926L454.065,861.974" style="fill:none;stroke:black;stroke-width:12.1px;"/>
|
||||
<path d="M459.169,919.169C512.194,898.262 539.171,867.298 535.241,824.402C568.052,818.31 598.499,817.058 625.84,822.165" style="fill:none;stroke:black;stroke-width:16.95px;"/>
|
||||
<path d="M366.219,241.106C389.605,229.261 413.371,220.601 438.247,217.5C416.795,202.419 418.72,174.582 444.22,162.47C442.086,178.175 447.633,193.354 464.772,207.738C468.721,167.57 530.015,162.087 545.674,184.112C526.45,189.314 513.082,197.344 504.566,207.717C522.403,208.119 540.706,207.86 556.2,210.609L566.935,168.471C536.388,146.208 495.718,142.166 464.65,166.705C467.703,133.264 419.536,128.364 404.624,178.47L366.219,241.106Z"/>
|
||||
<path d="M392.617,924.576C428.953,936.938 467.84,943.636 508.258,943.636C708.944,943.636 871.876,778.49 871.876,575.076C871.876,382.463 725.788,224.162 539.898,207.895L554.137,173.696L554.485,168.187C757.218,191.602 914.895,366.003 914.895,577.383C914.895,804.698 732.549,989.249 507.949,989.249C435.381,989.249 367.223,969.983 308.199,936.232L392.617,924.576ZM279.206,917.988C171.663,843.819 101.002,718.887 101.002,577.383C101.002,383.006 234.333,219.898 413.398,176.712L424.375,216.389C264.082,254.803 144.64,400.913 144.64,575.076C144.64,703.735 209.822,817.086 308.514,883.023L279.206,917.988Z"/>
|
||||
<path d="M714.938,895.223L647.287,836.693L616.06,855.308L549.158,889.412L459.845,919.216L390.213,928.828L429.291,950.712L535.832,960.1L586.137,952.591L662.254,931.896L714.938,895.223Z"/>
|
||||
<path d="M423.538,929.39C509.164,917.593 580.815,890.465 640.827,850.566C635.677,886.828 622.639,918.218 594.006,939.977C530.254,930.953 474.955,928.632 423.538,929.39Z" style="fill:url(#_Linear7);"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-52.3962,375.121,-375.121,-52.3962,471.134,384.463)"><stop offset="0" style="stop-color:rgb(255,176,44);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,73,2);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(28.6198,-84.8913,84.8913,28.6198,647.831,831.55)"><stop offset="0" style="stop-color:rgb(255,73,2);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,176,44);stop-opacity:1"/></linearGradient>
|
||||
<image id="_Image4" width="153px" height="214px" xlink:href="data:image/jpeg;base64,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"/>
|
||||
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-39.3403,137.423,-137.423,-39.3403,545.523,573.246)"><stop offset="0" style="stop-color:rgb(255,200,41);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,73,2);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.01113,-68.2054,68.2054,1.01113,482.996,741.463)"><stop offset="0" style="stop-color:white;stop-opacity:1"/><stop offset="1" style="stop-color:rgb(179,179,179);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-7.13599,-34.117,34.117,-7.13599,578.793,922.144)"><stop offset="0" style="stop-color:rgb(164,164,164);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(106,106,106);stop-opacity:1"/></linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
9
src/frontend/src/icons/Docling/index.tsx
Normal file
9
src/frontend/src/icons/Docling/index.tsx
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import SvgDocling from "./Docling";
|
||||
|
||||
export const DoclingIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <SvgDocling ref={ref} {...props} />;
|
||||
});
|
||||
|
|
@ -24,6 +24,7 @@ import { ConfluenceIcon } from "@/icons/Confluence";
|
|||
import { CouchbaseIcon } from "@/icons/Couchbase";
|
||||
import { CrewAiIcon } from "@/icons/CrewAI";
|
||||
import { DeepSeekIcon } from "@/icons/DeepSeek";
|
||||
import { DoclingIcon } from "@/icons/Docling";
|
||||
import { DropboxIcon } from "@/icons/Dropbox";
|
||||
import { DuckDuckGoIcon } from "@/icons/DuckDuckGo";
|
||||
import { ElasticsearchIcon } from "@/icons/ElasticsearchStore";
|
||||
|
|
@ -141,6 +142,7 @@ export const eagerIconsMapping = {
|
|||
Couchbase: CouchbaseIcon,
|
||||
CrewAI: CrewAiIcon,
|
||||
DeepSeek: DeepSeekIcon,
|
||||
Docling: DoclingIcon,
|
||||
Dropbox: DropboxIcon,
|
||||
DuckDuckGo: DuckDuckGoIcon,
|
||||
ElasticsearchStore: ElasticsearchIcon,
|
||||
|
|
|
|||
|
|
@ -70,6 +70,8 @@ export const lazyIconsMapping = {
|
|||
import("@/icons/Cursor").then((mod) => ({ default: mod.CursorIcon })),
|
||||
DeepSeek: () =>
|
||||
import("@/icons/DeepSeek").then((mod) => ({ default: mod.DeepSeekIcon })),
|
||||
Docling: () =>
|
||||
import("@/icons/Docling").then((mod) => ({ default: mod.DoclingIcon })),
|
||||
Dropbox: () =>
|
||||
import("@/icons/Dropbox").then((mod) => ({ default: mod.DropboxIcon })),
|
||||
DuckDuckGo: () =>
|
||||
|
|
|
|||
|
|
@ -256,6 +256,7 @@ export const SIDEBAR_BUNDLES = [
|
|||
name: "datastax",
|
||||
icon: "AstraDB",
|
||||
},
|
||||
{ display_name: "Docling", name: "docling", icon: "Docling" },
|
||||
{ display_name: "Olivya", name: "olivya", icon: "Olivya" },
|
||||
{ display_name: "LangWatch", name: "langwatch", icon: "Langwatch" },
|
||||
{ display_name: "Notion", name: "Notion", icon: "Notion" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue