{"version":3,"file":"entity.mjs","sources":["../../../../src/types/entity.ts"],"sourcesContent":["import { Module, SaveResult, Template } from '@myprint/design/types/R';\nimport { i18n } from '@myprint/design/locales';\n\nexport interface PrintOptions {\n    taskId?: string,\n    panel?: Panel | string,\n    previewDataList?: any[],\n\n    title?: string,\n    timeout?: number,\n\n    file?: Blob | ArrayBuffer | Uint8Array | string,\n    html?: string,\n    css?: string,\n    printer?: string,\n\n    // 支持MyPrint客户端、windows原生、windows直连\n    orientation?: 'portrait' | 'landscape' | 'auto', // 打印方向\n    // 支持MyPrint客户端、windows直连，macos直连\n    swapWidthHeight?: boolean, // 是否交换宽高\n    // 支持MyPrint客户端、windows直连，macos直连\n    pageSize?: string, // 打印file 时使用\n    // 支持MyPrint客户端\n    width?: number,// 单位毫米\n    // 支持MyPrint客户端\n    height?: number, //高 单位毫米\n    // 支持MyPrint客户端、windows直连，macos直连\n    copies?: number, //打印份数\n    // 打印文件时使用（例如pdf）\n    scale?: 'fit',\n    // 支持MyPrint客户端、windows直连，macos直连\n    scaleFactor?: number,\n    printBackground?: boolean, // 是否打印背景\n    color?: boolean, // 是否打印颜色\n\n    /**\n     * 支持MyPrint客户端、windows直连，macos直连\n     * 双面打印 | 单面打印\n     */\n    duplexMode?: 'duplex' | 'simplex',\n    // 支持MyPrint客户端\n    dpi?: any\n}\n\nexport interface DesignPanelProps {\n    template?: Template;\n    saveTemplate?: (template: Template) => Promise<SaveResult>;\n    module?: Module;\n    height?: string;\n    generateImg?: boolean;\n    showBackButton?: boolean;\n    showPrintButton?: boolean;\n    showDownloadPdfButton?: boolean;\n    showPreviewButton?: boolean;\n    showClearButton?: boolean;\n    showSaveButton?: boolean;\n}\n\nexport interface MyPrintConfig {\n    serverUrl?: string;\n    clientUrl?: string;\n    disabledClient?: boolean;\n}\n\nexport interface PrintResult {\n    status: 'SUCCESS' | 'ERROR' | 'TIMEOUT' | 'CLOSE';\n    msg?: string,\n    blob?: Blob,\n    blobList?: Blob[],\n    type: 'CHROME_PRINT' | 'TIMEOUT' | 'CLIENT_PRINT' | 'CHROME_GENERATE_PDF' | 'CHROME_GENERATE_IMG' | 'SERVER_GENERATE_IMG' | 'CLIENT_GENERATE_PDF' | 'SERVER_GENERATE_PDF' | 'CLOSE';\n}\n\nexport interface ClientCmd {\n    taskId: string;\n    cmd: 'print' | 'printerList' | 'generatePdf' | 'generatePdfResult' | 'printResult' | 'ping' | 'text/css',\n    options?: PrintOptions\n}\n\nexport interface ClientResult {\n    taskId: string;\n    cmd: 'print' | 'printerList' | 'generatePdf' | 'generatePdfResult' | 'printResult' | 'pong',\n    data?: Buffer | any,\n    status?: 'SUCCESS' | 'ERROR',\n    msg?: string\n}\n\nexport interface Printer {\n\n    /**\n     * a longer description of the printer's type.\n     */\n    description: string;\n    /**\n     * the name of the printer as shown in Print Preview.\n     */\n    displayName: string;\n    /**\n     * whether or not a given printer is set as the default printer on the OS.\n     */\n    isDefault: boolean;\n    /**\n     * the name of the printer as understood by the OS.\n     */\n    name: string;\n    /**\n     * an object containing a variable number of platform-specific printer information.\n     */\n    options: any;\n    /**\n     * the current status of the printer.\n     */\n    status: number;\n}\n\nexport interface Provider {\n    name: string;\n    pageUnit: PageUnit;\n    fontSizeUnit: FontSizeUnit;\n    pageSize: string;\n    width: number;\n    height: number;\n    watermark: boolean;\n    watermarkContent: string;\n    dragSnapPanelIs: number;\n    dragSnapIs: number;\n    elementList: MyElement[];\n}\n\nexport interface Design {\n    scale: number;\n}\n\n/**\n * 节点关系\n */\nexport interface ElementRelation {\n    elementList: MyElement[];\n}\n\nexport interface Id {\n    id: string;\n}\n\nexport interface Point {\n    x: number;\n    y: number;\n}\n\nexport interface Rect extends Point {\n    width: number;\n    height: number;\n}\n\nexport interface SvgData {\n    points: Point[];\n    controlPoints: Point[];\n}\n\nexport interface PointLabel extends Point {\n    label?: string;\n    type: 'control' | 'virtual' | 'rotate';\n    insertIndex: number;\n}\n\nexport interface PointClick extends Point {\n    clickTimestamp: number;\n}\n\nexport interface MyAuxiliaryLine extends Point, Id {\n    direction: 'vertical' | 'horizontal';\n    runtimeOption: RuntimeElementOption;\n}\n\nexport interface Line {\n    start: Point;\n    end: Point;\n}\n\nexport interface Container extends Rect, ElementRelation, Id {\n    minWidth: number;\n    minHeight: number;\n    type: elementType;\n    visibility: 'visible' | 'hidden';\n\n    /**\n     * 运行时配置\n     */\n    runtimeOption: RuntimeElementOption;\n}\n\nexport interface Panel extends Container {\n    name: string;\n    width: number;\n    height: number;\n    pageSize: string;\n    pageUnit: PageUnit;\n    fontSizeUnit: FontSizeUnit;\n    watermark: boolean;\n    watermarkContent: string;\n    dragSnapPanelIs: number;\n    dragSnapIs: number;\n    design: Design;\n    orientation?: 'p' | 'portrait' | 'l' | 'landscape';\n    pageHeader?: MyElement;\n    pageFooter?: MyElement;\n    groupList: string[][];\n    // 辅助线列表\n    auxiliaryLineList: MyAuxiliaryLine[];\n}\n\nexport interface PreviewContext {\n    autoPageIs: boolean,\n    currentPreview: PreviewWrapper\n    previewData: any\n    panel: Panel\n    pageList: PreviewContainerWrapper[]\n    currentPage: PreviewContainerWrapper\n    top: number\n    bottom: number\n    pagingRepetition: boolean\n}\n\nexport interface PreviewWrapper extends MyElement, TableCellElement, PreviewContainerWrapper {\n    offsetLastElementTop: number;\n    heightIs: boolean;\n    tableHeadHiddenIs: boolean;\n    previewTableRowIndex: number;\n    target: any;\n}\n\nexport interface PreviewContainerWrapper extends MyElement {\n    offsetTop: number;\n    previewWrapperList: PreviewWrapper[];\n}\n\nexport interface DragWrapper {\n    dragIng: boolean\n    type: string\n    element: MyElement,\n    start: Position\n    end: Position\n}\n\n// 节点类型\nexport const elementTypeFormat = {\n    Panel: i18n('provider.panel'),\n    Text: i18n('provider.text'),\n    TextTime: i18n('provider.text.time'),\n    Image: i18n('provider.image'),\n    DataTable: i18n('provider.data.table'),\n    FreeTable: i18n('provider.free.table'),\n    Rect: i18n('provider.rect'),\n    HorizontalLine: i18n('provider.horizontal.line'),\n    DottedHorizontalLine: i18n('provider.dotted.horizontal.line'),\n    VerticalLine: i18n('provider.vertical.line'),\n    DottedVerticalLine: i18n('provider.dotted.vertical.line'),\n    Container: i18n('provider.container'),\n    PageHeader: i18n('provider.page.header'),\n    PageFooter: i18n('provider.page.footer'),\n    PageNum: i18n('provider.page.num'),\n    SvgPolygonLine: i18n('provider.svg.polygon line'),\n    SvgLine: i18n('provider.svg.line'),\n    SvgBezierCurve: i18n('provider.svg.bezier.curve'),\n    SvgBezierCurveThree: i18n('provider.svg.bezier.curve.three'),\n    SvgCircle: i18n('provider.svg.circle'),\n    SvgEllipse: i18n('provider.svg.ellipse'),\n    DrawPanel: i18n('provider.draw.panel')\n\n    // 私有类型\n};\n\nexport const displayStrategyFormat = {\n    'none': '不显示',\n    'firstPage': '首页',\n    'lastPage': '尾页',\n    'oddPage': '奇数',\n    'evenPage': '偶数'\n};\n\nexport type displayStrategy = keyof typeof displayStrategyFormat\n\nexport const cellTypeFormat = {\n    Head: '表头',\n    Body: '表体',\n    Statistics: '统计行'\n};\n//统计类型\nexport const statisticsTypeFormat = {\n    Sum: '求和',\n    Avg: '平均值',\n    Count: '计数',\n    DistinctCount: '去重计数',\n    Max: '最大值',\n    Min: '最小值',\n    CustomFormula: '自定义公式'\n};\n\nexport type DisplayModel = 'design' | 'preview' | 'print'\nexport type PageUnit = 'px' | 'mm' | 'cm' | 'in'\nexport type FontSizeUnit = 'px' | 'pt'\n\nexport type elementType = keyof typeof elementTypeFormat\nexport type cellType = keyof typeof cellTypeFormat\nexport type statisticsType = keyof typeof statisticsTypeFormat\n\ntype textContentType =\n    'Text'\n    | 'Barcode'\n    | 'QrCode'\n\n// 节点状态\nexport type elementStatus = 'NONE' | 'SELECT' | 'SELECT_REMOVE' | 'HANDLE' | 'HANDLE_ED' | 'HANDLE_EDIT_ING'\nexport type auxiliaryLineStatus = 'SHOW' | 'HIDDEN'\n\ntype textAlign = 'start' | 'center' | 'end'\n\nexport interface HandlePanel {\n    icon: string;\n    label: string;\n    visible: boolean;\n}\n\nexport interface HandlePanelPosition extends Container {\n    right: number;\n}\n\n// export interface DataTableRow {\n//     type: 'HEAD' | 'DATA' | 'STATS';\n//     columnList: MyElement[];\n// }\n\nexport interface MyElement extends Container {\n    contentType?: textContentType;\n    field: string;\n    enable?: number;\n    label?: string;\n    data?: any;\n\n    option: ElementOption;\n    svgOption: ElementSvgOption;\n\n    /* data-table - start*/\n    columnBody: TableCellElement;\n    columnList: TableHeadProviderCellElement[];\n    tableHeadList: TableCellElement[][];\n    tableBodyList: TableCellElement[][];\n    disableCellMap: Record<number, 0 | 1 | undefined>;\n    // 数据行合并单元格-预留\n    // 统计行\n    statisticsList: TableStatisticsCellElement[][];\n    /* data-table - end*/\n\n    /* custom-table - start*/\n    rowList: TableCellElement[][];\n    /* custom-table - end*/\n\n    // columnOption: ElementSvgOption;\n    // bodyOption: ElementSvgOption;\n    // previewRuntimeOption: {\n    //     heightIs: boolean\n    // }\n    /**\n     * 是否锁定\n     */\n    lock?: number;\n\n    /**\n     * 是否组合\n     */\n    groupIs?: boolean;\n}\n\nexport interface TableHeadProviderCellElement extends Rect, Id {\n    type: elementType;\n    contentType?: textContentType;\n    field?: string;\n    enable?: number;\n    label?: string;\n    data?: any;\n\n    columnBody: TableCellElement;\n\n    option: ElementOption;\n\n    rowspan: number;\n    colspan: number;\n\n    columnList: Array<TableHeadProviderCellElement>;\n}\n\nexport interface TableCellElement extends MyElement {\n    rowspan: number;\n    colspan: number;\n}\n\nexport interface TableStatisticsCellElement extends TableCellElement {\n    statisticsType: statisticsType;\n    everyPageStatisticsIs: boolean;\n    tableStatisticsIs: boolean;\n\n    // 预留值\n    customFormula: string;\n}\n\nexport interface TextElement extends MyElement {\n    labelOption?: ElementOption;\n    contentType: textContentType;\n}\n\n/**\n * 运行时参数，不提交后台\n */\nexport interface RuntimeElementOption extends Position {\n    centerX: number;\n    centerY: number;\n    width: number;\n    height: number;\n    translate: Point;\n    bounds: Position;\n    parent?: Container;\n    cellParent: TableCellElement;\n    target: any;\n    rotate: number;\n    // 组件实时位置 单位px\n    init: Container;\n    status: elementStatus;\n    auxiliaryLineStatus: auxiliaryLineStatus;\n    cutIngIs: boolean;\n\n    previewIs: boolean;\n\n    /**\n     * 工作环境，如果是在表格中，填充满整个cell\n     */\n    workEnvironment: elementType;\n    cellType: cellType;\n\n    nestColumnList: TableCellElement[];\n\n    // 是否拖拽进入\n    dragInIs: boolean;\n\n    // 下标\n    index: number;\n    printRealHeight: number;\n}\n\nexport interface ElementOption {\n    barCodeType: string;\n    barCodeDisplayValIs: boolean;\n    qrCodeScale: number, // 二维码缩放倍数\n    qrErrorCorrectionLevel: 'low' | 'medium' | 'quartile' | 'high' | 'L' | 'M' | 'Q' | 'H', // 二维码容错等级\n    // aspectRatio: number;\n    keepRatio: boolean;\n    // 固定位置打印\n    fixed: boolean;\n    fontFamily: string;\n    fontSize: number;\n    opacity: number;\n    color: string;\n    background: 'none';\n    bold: boolean;\n    underline: boolean;\n    lineThrough: boolean;\n    italic: boolean;\n    borderAll: boolean;\n    borderWidth: number;\n    borderRadius: number;\n    lineWidth: number;\n    rotate: number;\n    // textType: string;\n    textAlign: textAlign;\n    verticalAlign: textAlign;\n    // 换行\n    lineBreak: number;\n    lineHeight: number;\n    dottedStyle: 'dotted' | 'dashed';\n    sort: number;\n    hiddenLabel: boolean;\n    labelSplit: boolean;\n    disableSort: number;\n    disableEnable: number;\n    autoTextHeight: boolean;\n    enable: number;\n    padding: Position;\n    margin: Position;\n    formatter?: string;\n\n    // 显示策略\n    displayStrategy?: displayStrategy;\n\n    tableHeightType: 'FIXED' | 'AUTO';\n\n    tableBodyBgStyleType: 'NONE' | 'COMMON' | 'CUSTOM';\n\n    tablePageHeadIs: number;\n    tableHiddenHeadIs: number;\n\n    tableBodyHeightType: 'FIXED' | 'AUTO';\n    tableBodyHeight: number;\n}\n\nexport interface ElementSvgOption {\n}\n\nexport interface Position extends Point {\n    top: number;\n    bottom: number;\n    left: number;\n    right: number;\n}\n\nexport interface ContentScaleVo {\n    viewport: Container;\n    miniMap: Container;\n    scale: number;\n    openIs: boolean;\n    width: number;\n    height: number;\n}\n\n\nexport interface FormatterVariable {\n    pageIndex: number,\n    pageSize: number,\n    nowDate?: Date\n}\n\nexport type MyHtmlElement = HTMLElement & {\n    element: MyElement\n}\n\nexport interface DownList {\n    label: string,\n    value: any,\n    enable?: boolean,\n    click?: () => void,\n    icon?: string\n}\n"],"names":[],"mappings":";;AAoPO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,KAAA,EAAO,KAAK,gBAAgB,CAAA;AAAA,EAC5B,IAAA,EAAM,KAAK,eAAe,CAAA;AAAA,EAC1B,QAAA,EAAU,KAAK,oBAAoB,CAAA;AAAA,EACnC,KAAA,EAAO,KAAK,gBAAgB,CAAA;AAAA,EAC5B,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,IAAA,EAAM,KAAK,eAAe,CAAA;AAAA,EAC1B,cAAA,EAAgB,KAAK,0BAA0B,CAAA;AAAA,EAC/C,oBAAA,EAAsB,KAAK,iCAAiC,CAAA;AAAA,EAC5D,YAAA,EAAc,KAAK,wBAAwB,CAAA;AAAA,EAC3C,kBAAA,EAAoB,KAAK,+BAA+B,CAAA;AAAA,EACxD,SAAA,EAAW,KAAK,oBAAoB,CAAA;AAAA,EACpC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,OAAA,EAAS,KAAK,mBAAmB,CAAA;AAAA,EACjC,cAAA,EAAgB,KAAK,2BAA2B,CAAA;AAAA,EAChD,OAAA,EAAS,KAAK,mBAAmB,CAAA;AAAA,EACjC,cAAA,EAAgB,KAAK,2BAA2B,CAAA;AAAA,EAChD,mBAAA,EAAqB,KAAK,iCAAiC,CAAA;AAAA,EAC3D,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAGzC,EAAA;AAEO,MAAM,qBAAwB,GAAA;AAAA,EACjC,MAAQ,EAAA,oBAAA;AAAA,EACR,WAAa,EAAA,cAAA;AAAA,EACb,UAAY,EAAA,cAAA;AAAA,EACZ,SAAW,EAAA,cAAA;AAAA,EACX,UAAY,EAAA,cAAA;AAChB,EAAA;AAIO,MAAM,cAAiB,GAAA;AAAA,EAC1B,IAAM,EAAA,cAAA;AAAA,EACN,IAAM,EAAA,cAAA;AAAA,EACN,UAAY,EAAA,oBAAA;AAChB,EAAA;AAEO,MAAM,oBAAuB,GAAA;AAAA,EAChC,GAAK,EAAA,cAAA;AAAA,EACL,GAAK,EAAA,oBAAA;AAAA,EACL,KAAO,EAAA,cAAA;AAAA,EACP,aAAe,EAAA,0BAAA;AAAA,EACf,GAAK,EAAA,oBAAA;AAAA,EACL,GAAK,EAAA,oBAAA;AAAA,EACL,aAAe,EAAA,gCAAA;AACnB;;;;"}