@gct-paas/word 0.2.7-beta.4 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/svgs/table/index.d.ts +0 -1
- package/dist/base/calendar/src/calendar.vue.d.ts +1 -1
- package/dist/base/dropdown/src/dropdown-basic-select.vue.d.ts +0 -6
- package/dist/base/input/src/input-number.vue.d.ts +0 -1
- package/dist/base/message/src/Message.vue.d.ts +0 -2
- package/dist/base/message/src/message.d.ts +0 -2
- package/dist/base/modal/src/modal.type.d.ts +1 -3
- package/dist/base/rdo-tree-select/src/rdo-tree-select.vue.d.ts +1 -1
- package/dist/base/scrollbar/src/scrollbar.vue.d.ts +1 -1
- package/dist/base/select/src/basic-select.vue.d.ts +4 -16
- package/dist/base/utils/image-size-util.d.ts +7 -11
- package/dist/capabilities/model-field-runtime/types/field.d.ts +0 -4
- package/dist/core/command/commands/DeleteCol.d.ts +1 -1
- package/dist/core/command/commands/DeleteRow.d.ts +1 -1
- package/dist/core/command/commands/InsertTable.d.ts +1 -0
- package/dist/core/command/types.d.ts +0 -21
- package/dist/core/data/DataManager.d.ts +1 -6
- package/dist/core/data/enrichers/companion-enricher.d.ts +2 -0
- package/dist/core/data/types/runtime-config.d.ts +0 -11
- package/dist/core/event/handlers/IMEHandler.d.ts +0 -1
- package/dist/core/index.d.ts +0 -2
- package/dist/core/model/document/WtblPr.d.ts +0 -2
- package/dist/core/model/document/Wtc.d.ts +0 -2
- package/dist/core/model/document/wtcRegionRef.d.ts +1 -1
- package/dist/core/model/logic/subtable/repeating/RepeatingRegion.d.ts +1 -4
- package/dist/core/model/logic/subtable/shared/dataGroupSlotCount.d.ts +1 -37
- package/dist/core/model/overlays/Wlayout.d.ts +0 -4
- package/dist/core/view/Doc.d.ts +0 -5
- package/dist/core/view/TableCell.d.ts +0 -3
- package/dist/core/widget/types.d.ts +2 -2
- package/dist/domain/active/active-types.d.ts +1 -3
- package/dist/domain/constants/enum/index.d.ts +2 -0
- package/dist/domain/constants/enum/product.d.ts +9 -0
- package/dist/domain/constants/enum/production-identification.d.ts +19 -0
- package/dist/domain/field/field-props-schema-type.d.ts +1 -1
- package/dist/domain/field/field-type.d.ts +0 -58
- package/dist/domain/field/form-value.d.ts +0 -6
- package/dist/domain/field/material-lot-validation.d.ts +2 -0
- package/dist/domain/table/business/material/material-requisition/profile/field-keys.d.ts +1 -1
- package/dist/domain/table/business/material/types.d.ts +1 -2
- package/dist/domain/table/design/ribbon-options.d.ts +0 -2
- package/dist/domain/table/design/sub-model-matcher.d.ts +0 -2
- package/dist/domain/table/index.d.ts +0 -3
- package/dist/domain/table/registry.d.ts +2 -5
- package/dist/domain/table/runtime/table-runtime.d.ts +0 -3
- package/dist/domain/table/types.d.ts +3 -13
- package/dist/index.es.js +9731 -31467
- package/dist/runtime/canvas/doc-layout.vue.d.ts +2 -1
- package/dist/runtime/canvas/table/render/material-consume/bom-validator.d.ts +2 -10
- package/dist/runtime/canvas/table/render/material-consume/material-consume-group-merge.d.ts +0 -1
- package/dist/runtime/canvas/table/render/material-consume/material-consume-table-controller.d.ts +0 -6
- package/dist/runtime/canvas/table/shared/table-lines.vue.d.ts +0 -1
- package/dist/runtime/interface/computed.d.ts +1 -1
- package/dist/runtime/renderer/dialogs/device-scan/submit-device-scan.d.ts +0 -3
- package/dist/runtime/renderer/dialogs/signature/signature-dialog.vue.d.ts +1 -54
- package/dist/runtime/renderer/dialogs/upload-image/base-upload-image.vue.d.ts +0 -1
- package/dist/runtime/renderer/dialogs/upload-image/upload-image-dialog.vue.d.ts +0 -1
- package/dist/runtime/renderer/dropdowns/components/tables/composables/useSelectTable.d.ts +0 -2
- package/dist/runtime/renderer/dropdowns/components/tables/composables/useTableDropdown.d.ts +1 -2
- package/dist/runtime/renderer/dropdowns/components/tables/table-option-dropdown.vue.d.ts +4 -4
- package/dist/runtime/renderer/dropdowns/factories/dropdown-factory.d.ts +5 -1
- package/dist/runtime/validation/layout.d.ts +0 -20
- package/dist/runtime/validation/useFormValidator.d.ts +0 -4
- package/dist/sdk/doc-runtime/factories/document-initializer.d.ts +0 -1
- package/dist/sdk/doc-runtime/factories/useDocumentFactory.d.ts +0 -5
- package/dist/sdk/engine/index.d.ts +1 -3
- package/dist/sdk/setup.d.ts +0 -6
- package/dist/sdk/types/index.d.ts +0 -6
- package/dist/sdk/vue/index.d.ts +0 -6
- package/dist/suites/edhr/manifest/field/_common_/basic.d.ts +3 -3
- package/dist/suites/edhr/panel-schema/index.d.ts +0 -1
- package/dist/suites/edhr/panel-schema/rule/components/add-rule-button.vue.d.ts +3 -8
- package/dist/suites/edhr/panel-schema/rule/types.d.ts +0 -3
- package/dist/suites/edhr/panel-schema/rule/use-rules-config.d.ts +0 -12
- package/dist/suites/shared/panel/modules/field-formula-module/field-formula-module.vue.d.ts +0 -1
- package/dist/utils/adapters/ServiceUtil.d.ts +0 -9
- package/dist/word.css +1317 -1704
- package/package.json +4 -4
- package/dist/core/command/base/FloatingFieldCommand.d.ts +0 -9
- package/dist/core/command/commands/InsertFloatingField.d.ts +0 -9
- package/dist/core/command/commands/MoveFloatingField.d.ts +0 -10
- package/dist/core/command/commands/RemoveFloatingField.d.ts +0 -12
- package/dist/core/command/commands/SetTableBorder.d.ts +0 -14
- package/dist/core/data/enrichers/udi-enricher.d.ts +0 -23
- package/dist/core/data/formula/business-functions.d.ts +0 -10
- package/dist/core/data/formula/formula-params-cache.d.ts +0 -15
- package/dist/core/model/types/table-border.d.ts +0 -18
- package/dist/core/runtime/DocumentRuntimeManager.d.ts +0 -34
- package/dist/core/table/border-selection.d.ts +0 -9
- package/dist/core/table/borders.d.ts +0 -42
- package/dist/domain/document-rule/index.d.ts +0 -3
- package/dist/domain/document-rule/runtime/decision-rule-evaluator.d.ts +0 -13
- package/dist/domain/document-rule/runtime/document-rule-runtime.d.ts +0 -19
- package/dist/domain/document-rule/types.d.ts +0 -50
- package/dist/domain/field/seal/seal-binding.d.ts +0 -19
- package/dist/domain/field/seal/seal-display.d.ts +0 -32
- package/dist/domain/field/seal/seal-value.d.ts +0 -39
- package/dist/domain/table/business/device/maintenance/index.d.ts +0 -1
- package/dist/domain/table/business/device/maintenance/profile/field-keys.d.ts +0 -9
- package/dist/domain/table/business/device/maintenance/profile/fields.d.ts +0 -2
- package/dist/domain/table/business/device/maintenance/profile/index.d.ts +0 -3
- package/dist/domain/table/business/device/point-inspection/index.d.ts +0 -1
- package/dist/domain/table/business/device/point-inspection/profile/field-keys.d.ts +0 -9
- package/dist/domain/table/business/device/point-inspection/profile/fields.d.ts +0 -2
- package/dist/domain/table/business/device/point-inspection/profile/index.d.ts +0 -3
- package/dist/domain/table/business/device/runtime/device-signature-lock-engine.d.ts +0 -13
- package/dist/domain/table/business/device/signature-lock.d.ts +0 -26
- package/dist/domain/table/business/material/material-consume/profile/fields.d.ts +0 -2
- package/dist/domain/table/business/material/material-substitution/actions/scan.d.ts +0 -3
- package/dist/domain/table/business/material/material-substitution/index.d.ts +0 -3
- package/dist/domain/table/business/material/material-substitution/profile/field-keys.d.ts +0 -41
- package/dist/domain/table/business/material/material-substitution/profile/fields.d.ts +0 -2
- package/dist/domain/table/business/material/material-substitution/profile/index.d.ts +0 -4
- package/dist/domain/table/business/material/material-substitution/runtime/register-handlers.d.ts +0 -1
- package/dist/domain/table/business/material/material-substitution/runtime/row-change-handlers.d.ts +0 -4
- package/dist/domain/table/design/hooks/on-bounded-default-props.d.ts +0 -3
- package/dist/domain/table/design/validate-nested-table-insert.d.ts +0 -3
- package/dist/domain/table/runtime/option-fill-updates.d.ts +0 -6
- package/dist/runtime/canvas/__common__/context-menu/resolve-table-context.d.ts +0 -10
- package/dist/runtime/canvas/node/seal-overlay.vue.d.ts +0 -6
- package/dist/runtime/canvas/print-capture.d.ts +0 -12
- package/dist/runtime/canvas/table/table-presentation.d.ts +0 -16
- package/dist/runtime/canvas/table/utils/paint-table-borders.d.ts +0 -4
- package/dist/runtime/designer/ribbon/hooks/useDhrEdition.d.ts +0 -7
- package/dist/runtime/designer/ribbon/svg/table-border-icon.vue.d.ts +0 -6
- package/dist/runtime/interface/sterilization-date.d.ts +0 -9
- package/dist/runtime/renderer/dialogs/document-rule-prompt/document-rule-prompt.vue.d.ts +0 -5
- package/dist/runtime/renderer/dialogs/document-rule-prompt/open-document-rule-prompt.d.ts +0 -2
- package/dist/runtime/renderer/dialogs/seal/open-seal-flow.d.ts +0 -3
- package/dist/runtime/renderer/dialogs/seal/seal-api.d.ts +0 -17
- package/dist/runtime/renderer/dialogs/seal/seal-auth-dialog.vue.d.ts +0 -60
- package/dist/runtime/renderer/dialogs/seal/seal-confirm-dialog.vue.d.ts +0 -9
- package/dist/runtime/renderer/dialogs/seal/seal-runtime.d.ts +0 -30
- package/dist/runtime/renderer/dialogs/seal/types.d.ts +0 -24
- package/dist/runtime/renderer/dialogs/seal/use-seal-confirm.d.ts +0 -27
- package/dist/runtime/renderer/dialogs/signature/authentication/signature-authentication.vue.d.ts +0 -27
- package/dist/runtime/renderer/dialogs/signature/authentication/types.d.ts +0 -30
- package/dist/runtime/renderer/dialogs/signature/authentication/useSignatureAuthentication.d.ts +0 -29
- package/dist/runtime/renderer/dropdowns/components/tables/columns/business/material-consume-history.d.ts +0 -17
- package/dist/runtime/renderer/dropdowns/components/tables/composables/useSearchEnter.d.ts +0 -18
- package/dist/sdk/doc-runtime/composables/useDocumentRulePrompt.d.ts +0 -3
- package/dist/sdk/doc-runtime/queries/template-placed-fields.d.ts +0 -7
- package/dist/sdk/types/placed-form-field.d.ts +0 -6
- package/dist/suites/edhr/component/gct-seal-render.vue.d.ts +0 -7
- package/dist/suites/edhr/manifest/field/business/inspection-module-qty-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/business/udi-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/logic/seal-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/object-type/device-parameter-object-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/object-type/inspection-parameter-object-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/object-type/process-parameter-object-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/trace/inspection-container-manifest.d.ts +0 -2
- package/dist/suites/edhr/manifest/field/trace/sterilization-date-manifest.d.ts +0 -2
- package/dist/suites/edhr/panel-schema/material-substitution-table/material-substitution-table.basic.d.ts +0 -1
- package/dist/suites/edhr/panel-schema/rule/components/decision-rule-condition.vue.d.ts +0 -19
- package/dist/suites/edhr/panel-schema/rule/components/decision-rule-group.vue.d.ts +0 -16
- package/dist/suites/edhr/panel-schema/rule/modals/inspection-decision-modal.vue.d.ts +0 -11
- package/dist/suites/edhr/panel-schema/rule/modals/open-inspection-decision-modal.d.ts +0 -8
- package/dist/suites/edhr/panel-schema/rule/utils/decision-rule.d.ts +0 -34
- package/dist/suites/shared/panel/utils/default-value-visibility.d.ts +0 -3
- package/dist/utils/pdf/collect-seal-draw-ops.d.ts +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gct-paas/word",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "GCT 在线 word",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -50,7 +50,6 @@
|
|
|
50
50
|
"version:release": "npm version patch --no-git-tag-version"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@gct-paas/form-base": "0.1.2-beta.3",
|
|
54
53
|
"@vueuse/core": "^14.1.0",
|
|
55
54
|
"async-validator": "^4.2.5",
|
|
56
55
|
"hotkeys-js": "4.0.0-beta.7",
|
|
@@ -60,10 +59,11 @@
|
|
|
60
59
|
"pdf-fontkit": "^1.8.9",
|
|
61
60
|
"pdf-lib": "^1.17.1",
|
|
62
61
|
"resize-observer-polyfill": "^1.5.1",
|
|
62
|
+
"@gct-paas/form-base": "0.1.1",
|
|
63
63
|
"vue-color": "^3.3.3"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@gct-paas/api": "
|
|
66
|
+
"@gct-paas/api": "0.1.0-word.11",
|
|
67
67
|
"@gct-paas/build": "^0.1.23",
|
|
68
68
|
"@types/crypto-js": "^4.1.1",
|
|
69
69
|
"@types/lodash-es": "^4.17.7",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"vue-tsc": "^3.2.8"
|
|
87
87
|
},
|
|
88
88
|
"peerDependencies": {
|
|
89
|
-
"@gct-paas/api": "
|
|
89
|
+
"@gct-paas/api": ">=0.1.0",
|
|
90
90
|
"bignumber.js": "^9.0.0",
|
|
91
91
|
"crypto-js": "^4.1.1",
|
|
92
92
|
"dayjs": "^1.11.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CommandBase } from './CommandBase';
|
|
2
|
-
import { CommandType } from '../types';
|
|
3
|
-
/** Existing commands snapshot only the body; floating field commands also own their overlays. */
|
|
4
|
-
export declare abstract class FloatingFieldCommand<T extends CommandType> extends CommandBase<T> {
|
|
5
|
-
private overlays?;
|
|
6
|
-
private overlayIdentities?;
|
|
7
|
-
protected saveSnapshot(): import('../../model/types').RawElement | undefined;
|
|
8
|
-
protected restoreSnapshot(): void;
|
|
9
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FloatingFieldCommand } from '../base/FloatingFieldCommand';
|
|
2
|
-
import { WrField } from '../../model/document';
|
|
3
|
-
export declare class InsertFloatingField extends FloatingFieldCommand<'insertFloatingField'> {
|
|
4
|
-
protected execute(): Promise<{
|
|
5
|
-
wr: WrField;
|
|
6
|
-
pos: number;
|
|
7
|
-
side: "before";
|
|
8
|
-
} | null>;
|
|
9
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { FloatingFieldCommand } from '../base/FloatingFieldCommand';
|
|
2
|
-
export declare class MoveFloatingField extends FloatingFieldCommand<'moveFloatingField'> {
|
|
3
|
-
private fieldId?;
|
|
4
|
-
protected execute(): Promise<{
|
|
5
|
-
wr: import('../../model/document').WrField;
|
|
6
|
-
pos: number;
|
|
7
|
-
side: "after";
|
|
8
|
-
} | null>;
|
|
9
|
-
protected afterUndo(): import('../types').CursorMeta | null;
|
|
10
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FloatingFieldCommand } from '../base/FloatingFieldCommand';
|
|
2
|
-
export declare class RemoveFloatingField extends FloatingFieldCommand<'removeFloatingField'> {
|
|
3
|
-
private fieldId?;
|
|
4
|
-
private bindingSnapshot;
|
|
5
|
-
protected execute(): Promise<{
|
|
6
|
-
wp: import('../../model/document').Wp;
|
|
7
|
-
pos: number;
|
|
8
|
-
side: "before";
|
|
9
|
-
} | null>;
|
|
10
|
-
protected restoreSnapshot(): void;
|
|
11
|
-
protected afterUndo(): import('../types').CursorMeta | null;
|
|
12
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CommandBase, PostCommandContext } from '../base/CommandBase';
|
|
2
|
-
import { CommandPayloadMap } from '../types';
|
|
3
|
-
import { Doc } from '../../view/Doc';
|
|
4
|
-
export declare class SetTableBorder extends CommandBase<'setTableBorder'> {
|
|
5
|
-
private target?;
|
|
6
|
-
private previousBorders?;
|
|
7
|
-
private savedCursors;
|
|
8
|
-
constructor(doc: Doc, payload: CommandPayloadMap['setTableBorder']);
|
|
9
|
-
private saveCursor;
|
|
10
|
-
private restoreContext;
|
|
11
|
-
protected execute(): Promise<PostCommandContext>;
|
|
12
|
-
protected restoreSnapshot(): void;
|
|
13
|
-
protected afterUndo(): import('../types').CommandResult;
|
|
14
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../view/Doc';
|
|
2
|
-
import { DataEnricherRegistration } from '../types';
|
|
3
|
-
import { FIELD_TYPE } from '../../../domain/field/field-type';
|
|
4
|
-
export interface UdiWidgetTarget {
|
|
5
|
-
valuePath: string;
|
|
6
|
-
}
|
|
7
|
-
type UdiWidgetInstance = {
|
|
8
|
-
widgetMeta?: {
|
|
9
|
-
field?: {
|
|
10
|
-
fieldType?: FIELD_TYPE;
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
valuePath?: string;
|
|
14
|
-
};
|
|
15
|
-
/** paramsConfig 中 containerId 优先;没有时使用 snId。 */
|
|
16
|
-
export declare function resolveUdiQuery(doc: Doc): Record<string, string> | undefined;
|
|
17
|
-
/** listAll 返回第一条 UDI;兼容接口返回 udi / name_ 的历史形态。 */
|
|
18
|
-
export declare function parseUdi(res: unknown): string | undefined;
|
|
19
|
-
/** 从单个 widget 实例解析 UDI enrich 目标。 */
|
|
20
|
-
export declare function tryCollectUdiTarget(instance: UdiWidgetInstance): UdiWidgetTarget | null;
|
|
21
|
-
/** UDI:按 paramsConfig.containerId / snId 查询并回填尚未赋值的字段。 */
|
|
22
|
-
export declare function createUdiEnricher(doc: Doc, targets: UdiWidgetTarget[]): DataEnricherRegistration;
|
|
23
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { setFormulaParamsConfig } from './formula-params-cache';
|
|
2
|
-
export type FormulaRegister = (name: string, executor: (...args: any[]) => any) => void;
|
|
3
|
-
interface DeviceParamConfig {
|
|
4
|
-
customFieldKey: string;
|
|
5
|
-
lowerLimit?: number | string | null;
|
|
6
|
-
upperLimit?: number | string | null;
|
|
7
|
-
}
|
|
8
|
-
type FetchDeviceParamLimits = (id: any) => Promise<DeviceParamConfig[] | null>;
|
|
9
|
-
export declare function configureDeviceParamCheck(fetcher: FetchDeviceParamLimits): void;
|
|
10
|
-
export declare function registerFormulaFuncs(register?: FormulaRegister): void;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
interface FormulaParam {
|
|
2
|
-
customFieldKey: string;
|
|
3
|
-
lowerLimit?: number | string | null;
|
|
4
|
-
upperLimit?: number | string | null;
|
|
5
|
-
}
|
|
6
|
-
export declare const currentParamsConfig: {
|
|
7
|
-
readonly routingParamList: FormulaParam[];
|
|
8
|
-
readonly inspectionParamList: FormulaParam[];
|
|
9
|
-
readonly deviceParamList: FormulaParam[];
|
|
10
|
-
};
|
|
11
|
-
/** Excel、Word 共用参数;空配置也要覆盖旧值。 */
|
|
12
|
-
export declare function setFormulaParamsConfig(paramsConfig?: Record<string, any> | null): void;
|
|
13
|
-
/** 随应用绑定一次失效通知,不包装或替换宿主计算函数。 */
|
|
14
|
-
export declare function bindFormulaCacheInvalidation(value: unknown): void;
|
|
15
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RawElement } from './raw';
|
|
2
|
-
export declare const TABLE_BORDER_COLOR = "#808080";
|
|
3
|
-
/** undefined inherits; 0 explicitly hides the edge. */
|
|
4
|
-
export type TableBorderWidth = 0 | 1 | 2;
|
|
5
|
-
export declare const CELL_BORDER_SIDES: readonly ["top", "bottom", "left", "right"];
|
|
6
|
-
export type CellBorderSide = (typeof CELL_BORDER_SIDES)[number];
|
|
7
|
-
export type CellBorders = Partial<Record<CellBorderSide, TableBorderWidth>>;
|
|
8
|
-
export type TableBorders = CellBorders & Partial<Record<'insideH' | 'insideV', TableBorderWidth>>;
|
|
9
|
-
export type TableBorderPreset = 'none' | 'all' | 'outer' | 'thickOuter' | 'top' | 'bottom' | 'left' | 'right' | 'inside';
|
|
10
|
-
export interface ResolvedBorder {
|
|
11
|
-
width: TableBorderWidth;
|
|
12
|
-
priority: number;
|
|
13
|
-
}
|
|
14
|
-
export type ResolvedCellBorders = Partial<Record<CellBorderSide, ResolvedBorder>>;
|
|
15
|
-
export declare function readTableBorders(node?: RawElement): TableBorders;
|
|
16
|
-
export declare function writeTableBorders(name: 'w:tcBorders' | 'w:tblBorders', borders: TableBorders): RawElement | undefined;
|
|
17
|
-
/** Never let an inherited visible edge override an explicit clear. */
|
|
18
|
-
export declare function chooseBorder(a?: ResolvedBorder, b?: ResolvedBorder): ResolvedBorder | undefined;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { FieldChangeMap, EmitSource } from '../data';
|
|
2
|
-
export interface DocumentValidationContext {
|
|
3
|
-
scene: 'submit';
|
|
4
|
-
}
|
|
5
|
-
export interface DocumentValidationDecision {
|
|
6
|
-
skipValidation: boolean;
|
|
7
|
-
reason?: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* 文档级运行时扩展。
|
|
11
|
-
*
|
|
12
|
-
* 表格、对象及文档规则都通过同一生命周期接入,避免业务能力分别挂在
|
|
13
|
-
* composable / DataManager / 校验入口中。
|
|
14
|
-
*/
|
|
15
|
-
export interface DocumentRuntimeExtension {
|
|
16
|
-
onInit?(): void | Promise<void>;
|
|
17
|
-
onHydrate?(): void | Promise<void>;
|
|
18
|
-
onFieldChanges?(changedMap: FieldChangeMap, options: {
|
|
19
|
-
batchSource: EmitSource;
|
|
20
|
-
}): void | Promise<void>;
|
|
21
|
-
beforeValidate?(context: DocumentValidationContext): DocumentValidationDecision | void | Promise<DocumentValidationDecision | void>;
|
|
22
|
-
destroy?(): void;
|
|
23
|
-
}
|
|
24
|
-
export declare class DocumentRuntimeManager {
|
|
25
|
-
private readonly extensions;
|
|
26
|
-
register(extension: DocumentRuntimeExtension): void;
|
|
27
|
-
onInit(): Promise<void>;
|
|
28
|
-
onHydrate(): Promise<void>;
|
|
29
|
-
onFieldChanges(changedMap: FieldChangeMap, options: {
|
|
30
|
-
batchSource: EmitSource;
|
|
31
|
-
}): Promise<void>;
|
|
32
|
-
beforeValidate(context: DocumentValidationContext): Promise<DocumentValidationDecision>;
|
|
33
|
-
destroy(): void;
|
|
34
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../view/Doc';
|
|
2
|
-
import { Wtc } from '../model/document/Wtc';
|
|
3
|
-
import { TableBorderBounds } from './borders';
|
|
4
|
-
import { ICursorPosition } from '../cursor/types/cursor';
|
|
5
|
-
export declare function modelCellAt(doc: Doc, cursor?: ICursorPosition | null): Wtc | undefined;
|
|
6
|
-
export declare function resolveTableBorderSelection(doc: Doc): {
|
|
7
|
-
table: import('..').Wtbl;
|
|
8
|
-
bounds: TableBorderBounds;
|
|
9
|
-
} | undefined;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Wtbl } from '../model/document/Wtbl';
|
|
2
|
-
import { Wtc } from '../model/document/Wtc';
|
|
3
|
-
import { TableBorderPreset, ResolvedCellBorders } from '../model/types/table-border';
|
|
4
|
-
export interface TableBorderBounds {
|
|
5
|
-
top: number;
|
|
6
|
-
bottom: number;
|
|
7
|
-
left: number;
|
|
8
|
-
right: number;
|
|
9
|
-
}
|
|
10
|
-
/** Expand until every intersecting merge is fully included. */
|
|
11
|
-
export declare function expandBorderBounds(table: Wtbl, bounds: TableBorderBounds): TableBorderBounds;
|
|
12
|
-
export declare function resolveCellBorders(cell: Wtc): ResolvedCellBorders;
|
|
13
|
-
export declare function applyTableBorderPreset(table: Wtbl, input: TableBorderBounds, preset: TableBorderPreset): boolean;
|
|
14
|
-
export interface BorderGridRow {
|
|
15
|
-
y: number;
|
|
16
|
-
height: number;
|
|
17
|
-
cells: readonly {
|
|
18
|
-
borderEdges?: ResolvedCellBorders;
|
|
19
|
-
}[];
|
|
20
|
-
}
|
|
21
|
-
export interface BorderMergeRect {
|
|
22
|
-
x: number;
|
|
23
|
-
y: number;
|
|
24
|
-
width: number;
|
|
25
|
-
height: number;
|
|
26
|
-
}
|
|
27
|
-
export interface TableBorderSegment {
|
|
28
|
-
x1: number;
|
|
29
|
-
y1: number;
|
|
30
|
-
x2: number;
|
|
31
|
-
y2: number;
|
|
32
|
-
width: 1 | 2;
|
|
33
|
-
color: string;
|
|
34
|
-
}
|
|
35
|
-
/** Use one document pixel grid for bitmap and vector output, including fractional column widths. */
|
|
36
|
-
export declare function getTableBorderDrawSegment(line: TableBorderSegment): TableBorderSegment;
|
|
37
|
-
/** Canvas and PDF share the same physical grid, conflict resolution and merge clipping. */
|
|
38
|
-
export declare function collectTableBorderSegments(rows: readonly BorderGridRow[], colWidths: readonly number[], merges?: readonly BorderMergeRect[]): TableBorderSegment[];
|
|
39
|
-
/** Design-only hints for explicitly hidden edges. Never serialize or export these lines. */
|
|
40
|
-
export declare function collectTableBorderGuideSegments(rows: readonly BorderGridRow[], colWidths: readonly number[], merges?: readonly BorderMergeRect[]): TableBorderSegment[];
|
|
41
|
-
/** Join only touching collinear strokes of the same style; never bridge hidden edges. */
|
|
42
|
-
export declare function joinTableBorderSegments(lines: readonly TableBorderSegment[]): TableBorderSegment[];
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { DecisionRuleGroup, InspectionDecisionRule } from '../types';
|
|
2
|
-
type DataRow = Record<string, unknown>;
|
|
3
|
-
/** 安全解析设计端保存的规则树;无效或空配置不命中。 */
|
|
4
|
-
export declare function parseInspectionDecisionRuleTree(dataRuleConfig?: string): DecisionRuleGroup | null;
|
|
5
|
-
/**
|
|
6
|
-
* 计算规则树。
|
|
7
|
-
*
|
|
8
|
-
* 同一子表的多个条件绑定到同一条有效行;多个子表则按行组合判断。
|
|
9
|
-
* 子表为空时使用 undefined 占位,使 OR 中的主表条件仍可独立命中。
|
|
10
|
-
*/
|
|
11
|
-
export declare function evaluateDecisionRuleTree(root: DecisionRuleGroup, rawData: DataRow): boolean;
|
|
12
|
-
export declare function evaluateInspectionDecisionRule(rule: InspectionDecisionRule | null | undefined, rawData: DataRow): boolean;
|
|
13
|
-
export {};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../../core/view/Doc';
|
|
2
|
-
import { DocumentRuntimeExtension, DocumentValidationContext, DocumentValidationDecision } from '../../../core/runtime/DocumentRuntimeManager';
|
|
3
|
-
import { FieldChangeMap } from '../../../core/data';
|
|
4
|
-
export declare const DOCUMENT_RULE_PROMPT_EVENT = "document-rule:prompt";
|
|
5
|
-
export interface DocumentRulePromptPayload {
|
|
6
|
-
rule: 'inspection-decision';
|
|
7
|
-
message: string;
|
|
8
|
-
}
|
|
9
|
-
/** 文档级规则运行时:统一处理状态迁移、提示事件及提交前裁决。 */
|
|
10
|
-
export declare class DocumentRuleRuntime implements DocumentRuntimeExtension {
|
|
11
|
-
private readonly doc;
|
|
12
|
-
private inspectionDecisionMatched;
|
|
13
|
-
constructor(doc: Doc);
|
|
14
|
-
/** 装载和整表换数只建立状态基线,不弹提示。 */
|
|
15
|
-
onHydrate(): void;
|
|
16
|
-
onFieldChanges(changedMap: FieldChangeMap): void;
|
|
17
|
-
beforeValidate(context: DocumentValidationContext): DocumentValidationDecision;
|
|
18
|
-
private evaluateInspectionDecision;
|
|
19
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export type DecisionRuleRelation = 'AND' | 'OR';
|
|
2
|
-
export type DecisionRuleValueType = 'FIXED' | 'FIELD';
|
|
3
|
-
/** 判定规则字段。保留所属模型/容器信息,供运行时准确取值。 */
|
|
4
|
-
export interface DecisionRuleField {
|
|
5
|
-
id: string;
|
|
6
|
-
key: string;
|
|
7
|
-
name: string;
|
|
8
|
-
type: string;
|
|
9
|
-
modelKey: string;
|
|
10
|
-
modelName?: string;
|
|
11
|
-
/** 主表 / 子表 / 对象字段 */
|
|
12
|
-
scope: 'main' | 'sub' | 'object';
|
|
13
|
-
subFieldKey?: string;
|
|
14
|
-
objectFieldKey?: string;
|
|
15
|
-
options?: Array<{
|
|
16
|
-
label: string;
|
|
17
|
-
value: string | number | boolean;
|
|
18
|
-
}>;
|
|
19
|
-
}
|
|
20
|
-
export interface DecisionRuleRightValue {
|
|
21
|
-
valueType: DecisionRuleValueType;
|
|
22
|
-
result?: string | number | boolean;
|
|
23
|
-
/** FIELD 类型右值的完整字段信息。 */
|
|
24
|
-
field?: DecisionRuleField;
|
|
25
|
-
}
|
|
26
|
-
export interface DecisionRuleCondition {
|
|
27
|
-
key: string;
|
|
28
|
-
pid: string;
|
|
29
|
-
level: number;
|
|
30
|
-
firstRow?: boolean;
|
|
31
|
-
class?: string;
|
|
32
|
-
leftValue?: DecisionRuleField;
|
|
33
|
-
operatorValue?: string;
|
|
34
|
-
rightValue?: DecisionRuleRightValue[];
|
|
35
|
-
}
|
|
36
|
-
export interface DecisionRuleGroup {
|
|
37
|
-
key: string;
|
|
38
|
-
pid: string;
|
|
39
|
-
level: number;
|
|
40
|
-
class?: string;
|
|
41
|
-
type: 'group';
|
|
42
|
-
operatorType: DecisionRuleRelation;
|
|
43
|
-
children: Array<DecisionRuleGroup | DecisionRuleCondition>;
|
|
44
|
-
}
|
|
45
|
-
export interface InspectionDecisionRule {
|
|
46
|
-
dataRuleEnabled: boolean;
|
|
47
|
-
dataRule: string;
|
|
48
|
-
dataRuleConfig: string;
|
|
49
|
-
prompt: string;
|
|
50
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { DocModel } from '../../../core/model/DocModel';
|
|
2
|
-
import { Doc } from '../../../core/view/Doc';
|
|
3
|
-
import { Page } from '../../../core/view/Page';
|
|
4
|
-
import { WrField } from '../../../core/model/document';
|
|
5
|
-
import { Wlayout } from '../../../core/model/overlays/Wlayout';
|
|
6
|
-
import { WidgetMeta } from '../../../core/widget/types';
|
|
7
|
-
import { SealPosition } from './seal-value';
|
|
8
|
-
export declare function isMainSealBinding(meta: WidgetMeta, mainModelKey: string): boolean;
|
|
9
|
-
export declare function listSealFields(model?: DocModel): {
|
|
10
|
-
overlay: import('../../../core/model/overlays/Woverlay').Woverlay;
|
|
11
|
-
layout: Wlayout;
|
|
12
|
-
field: WrField;
|
|
13
|
-
}[];
|
|
14
|
-
export type SealFieldEntry = ReturnType<typeof listSealFields>[number];
|
|
15
|
-
export declare function getSealTemplatePosition({ overlay, layout }: SealFieldEntry): SealPosition;
|
|
16
|
-
export declare function getSealInstancePosition(doc: Doc, entry: SealFieldEntry): SealPosition;
|
|
17
|
-
export declare function findSealPage(pages: Page[], position: SealPosition): Page | undefined;
|
|
18
|
-
export declare function getSealPagePosition(doc: Doc, page: Page, x: number, y: number): SealPosition;
|
|
19
|
-
export declare function initializeDocumentSeals(doc: Doc): void;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../../core/view/Doc';
|
|
2
|
-
import { ImageWidget } from '../../../core/view/runs/ImageWidget';
|
|
3
|
-
export declare function resolveSealDisplay(doc: Doc, widget: ImageWidget): {
|
|
4
|
-
stamped: boolean;
|
|
5
|
-
visible: boolean;
|
|
6
|
-
hasError: boolean;
|
|
7
|
-
emptySymbol: string;
|
|
8
|
-
showEmptySymbol: boolean;
|
|
9
|
-
placeholder: string;
|
|
10
|
-
requiredBorder: boolean | undefined;
|
|
11
|
-
state: undefined;
|
|
12
|
-
disabled: boolean;
|
|
13
|
-
isReadonly: boolean;
|
|
14
|
-
blocked: boolean;
|
|
15
|
-
} | {
|
|
16
|
-
stamped: boolean;
|
|
17
|
-
visible: boolean;
|
|
18
|
-
hasError: boolean;
|
|
19
|
-
emptySymbol: string;
|
|
20
|
-
showEmptySymbol: boolean;
|
|
21
|
-
placeholder: string;
|
|
22
|
-
requiredBorder: boolean | undefined;
|
|
23
|
-
state: {
|
|
24
|
-
required: boolean;
|
|
25
|
-
readonly: boolean;
|
|
26
|
-
disabled: boolean;
|
|
27
|
-
displayStatus: import('../../../core/widget/state').WidgetDisplayStatus;
|
|
28
|
-
};
|
|
29
|
-
disabled: boolean;
|
|
30
|
-
isReadonly: boolean;
|
|
31
|
-
blocked: boolean;
|
|
32
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export interface SealPosition {
|
|
2
|
-
sheetId: string;
|
|
3
|
-
pageIndex: number;
|
|
4
|
-
leftMm: number;
|
|
5
|
-
topMm: number;
|
|
6
|
-
}
|
|
7
|
-
export interface SealStamp {
|
|
8
|
-
sealId: string;
|
|
9
|
-
sealName: string;
|
|
10
|
-
sealType: string;
|
|
11
|
-
sealImage: string;
|
|
12
|
-
sealUserId: string;
|
|
13
|
-
sealUserName: string;
|
|
14
|
-
sealUserTime: string;
|
|
15
|
-
}
|
|
16
|
-
export interface SealFieldValue extends SealStamp {
|
|
17
|
-
sealPosition: SealPosition;
|
|
18
|
-
}
|
|
19
|
-
export declare function parseSealValue(raw: unknown): Record<string, unknown> | undefined;
|
|
20
|
-
export declare function isSealPosition(value: unknown): value is SealPosition;
|
|
21
|
-
/** Position is instance metadata, not evidence that the field has been filled. */
|
|
22
|
-
export declare function classifySealValue(raw: unknown): 'empty' | 'stamped' | 'invalid';
|
|
23
|
-
export declare const isSealStamped: (raw: unknown) => boolean;
|
|
24
|
-
export declare function readSealValue(raw: unknown, fallback: SealPosition): SealFieldValue;
|
|
25
|
-
export declare function stampSealValue(raw: unknown, fallback: SealPosition, stamp: SealStamp): string;
|
|
26
|
-
export declare function clearSealValue(raw: unknown, fallback: SealPosition): string;
|
|
27
|
-
export declare function moveSealValue(raw: unknown, fallback: SealPosition, position: SealPosition): string;
|
|
28
|
-
/** Only missing positions are repaired; malformed historical values remain available to validation. */
|
|
29
|
-
export declare function initializeSealValue(raw: unknown, fallback: SealPosition): unknown;
|
|
30
|
-
export declare function normalizeSealDiameter(value: unknown): number;
|
|
31
|
-
export declare const mmToPx: (mm: number) => number;
|
|
32
|
-
export declare const pxToMm: (px: number) => number;
|
|
33
|
-
export declare function clampSealPosition(p: SealPosition, widthPx: number, heightPx: number, diameterMm: number): SealPosition;
|
|
34
|
-
export declare function containSealImage(width: number, height: number, size: number): {
|
|
35
|
-
x: number;
|
|
36
|
-
y: number;
|
|
37
|
-
width: number;
|
|
38
|
-
height: number;
|
|
39
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { profile as maintenanceProfile } from './profile';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { profile as pointInspectionProfile } from './profile';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../../../../core';
|
|
2
|
-
/**
|
|
3
|
-
* 设备点检/保养签字锁定引擎。
|
|
4
|
-
*
|
|
5
|
-
* 由 TableRuntime 生命周期驱动,只在初始化、行初始化或用户数据变更后重算;
|
|
6
|
-
* 不依赖组件是否已挂载,也不在渲染过程中反向写状态。
|
|
7
|
-
*/
|
|
8
|
-
export declare class DeviceSignatureLockEngine {
|
|
9
|
-
private readonly doc;
|
|
10
|
-
constructor(doc: Doc);
|
|
11
|
-
apply(): void;
|
|
12
|
-
private collectConstraint;
|
|
13
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../../../core';
|
|
2
|
-
export type DeviceOperationControlField = 'inspector_' | 'reviewer_';
|
|
3
|
-
export interface FixedDeviceOperationConfig {
|
|
4
|
-
/** 签名后一并锁定的主表字段 */
|
|
5
|
-
mainFieldBindings?: string[];
|
|
6
|
-
/** 触发当前行数据锁定的签名字段 */
|
|
7
|
-
dataLockControlField?: DeviceOperationControlField;
|
|
8
|
-
}
|
|
9
|
-
export interface FixedDeviceOperationFieldState {
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
readonly?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface FixedDeviceOperationTable {
|
|
14
|
-
subFieldKey: string;
|
|
15
|
-
config: FixedDeviceOperationConfig;
|
|
16
|
-
}
|
|
17
|
-
/** 签名字段有有效数据时,认为该行已进入锁定状态。 */
|
|
18
|
-
export declare function hasSignatureValue(value: unknown): boolean;
|
|
19
|
-
export declare function isSignatureLockActive(config: FixedDeviceOperationConfig | undefined, rowData: Record<string, any> | undefined): boolean;
|
|
20
|
-
/** 已保存的固定表行,其控制签名不可再删除。 */
|
|
21
|
-
export declare function isPersistedSignatureLockActive(config: FixedDeviceOperationConfig | undefined, rowData: Record<string, any> | undefined): boolean;
|
|
22
|
-
export declare function getFixedDeviceOperationTables(doc: Doc): FixedDeviceOperationTable[];
|
|
23
|
-
/** 根据字段实际运行时路径解析设备点检/保养表的动态禁用、只读状态。 */
|
|
24
|
-
export declare function resolveFixedDeviceOperationFieldState(doc: Doc, runtimeValuePath: string): FixedDeviceOperationFieldState;
|
|
25
|
-
/** 组装设备点检/保养控制签名前需校验的主表与当前行字段路径。 */
|
|
26
|
-
export declare function resolveDeviceSignatureValidationPaths(doc: Doc, runtimeValuePath: string, candidatePaths: Iterable<string>): string[];
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 物料替换表(MATERIAL_SUBSTITUTION)字段 key
|
|
3
|
-
*/
|
|
4
|
-
export declare const F: {
|
|
5
|
-
/** 工序节点 */
|
|
6
|
-
readonly routingOperation: "routing_operation_id_";
|
|
7
|
-
/** SN */
|
|
8
|
-
readonly productionContainer: "production_container_id_";
|
|
9
|
-
/** 被替换物料批号 */
|
|
10
|
-
readonly sourceMaterialNo: "source_material_no_";
|
|
11
|
-
/** 被替换物料 */
|
|
12
|
-
readonly sourceProduct: "source_product_id_";
|
|
13
|
-
/** 被替换物料名称 */
|
|
14
|
-
readonly sourceProductName: "source_product_id_name_";
|
|
15
|
-
/** 被替换物料编码 */
|
|
16
|
-
readonly sourceProductCode: "source_product_id_code_";
|
|
17
|
-
/** 被替换物料规格 */
|
|
18
|
-
readonly sourceProductSpec: "source_product_id_spec_";
|
|
19
|
-
/** 原上料数量 */
|
|
20
|
-
readonly sourceQtyConsumed: "source_qty_consumed_";
|
|
21
|
-
/** 替换物料批号 */
|
|
22
|
-
readonly targetMaterialNo: "target_material_no_";
|
|
23
|
-
/** 替换物料 */
|
|
24
|
-
readonly targetProduct: "target_product_id_";
|
|
25
|
-
/** 替换物料名称 */
|
|
26
|
-
readonly targetProductName: "target_product_id_name_";
|
|
27
|
-
/** 替换物料编码 */
|
|
28
|
-
readonly targetProductCode: "target_product_id_code_";
|
|
29
|
-
/** 替换物料规格 */
|
|
30
|
-
readonly targetProductSpec: "target_product_id_spec_";
|
|
31
|
-
/** 替换数量 */
|
|
32
|
-
readonly targetQtyConsumed: "target_qty_consumed_";
|
|
33
|
-
};
|
|
34
|
-
export type MaterialSubstitutionFieldKey = (typeof F)[keyof typeof F];
|
|
35
|
-
/** 设计态固定禁用、运行态只读的物料信息字段 */
|
|
36
|
-
export declare const DISABLED_INPUT_FIELDS: readonly ["source_material_no_", "source_product_id_name_", "source_product_id_code_", "source_product_id_spec_", "source_qty_consumed_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_"];
|
|
37
|
-
export declare const CLEAR_ON_SOURCE_PRODUCT_EMPTY: readonly ["source_material_no_", "source_product_id_name_", "source_product_id_code_", "source_product_id_spec_", "source_qty_consumed_"];
|
|
38
|
-
/** 替换物料批号清空 / 手输时需清空的物料字段 */
|
|
39
|
-
export declare const CLEAR_ON_TARGET_MATERIAL_NO_EMPTY: readonly ["target_product_id_name_", "target_product_id_code_", "target_product_id_spec_"];
|
|
40
|
-
/** 替换料清空时同步清除批次、数量和物料信息。 */
|
|
41
|
-
export declare const CLEAR_ON_TARGET_PRODUCT_EMPTY: readonly ["target_material_no_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_", "target_qty_consumed_"];
|
package/dist/domain/table/business/material/material-substitution/runtime/register-handlers.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/domain/table/business/material/material-substitution/runtime/row-change-handlers.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Doc } from '../../../../../../core';
|
|
2
|
-
export declare function handleTargetMaterialNoChange(doc: Doc, subFieldKey: string, rowIndex: number): void;
|
|
3
|
-
export declare function handleSourceProductChange(doc: Doc, subFieldKey: string, rowIndex: number): void;
|
|
4
|
-
export declare function handleTargetProductChange(doc: Doc, subFieldKey: string, rowIndex: number): void;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
interface OptionFillWriter {
|
|
2
|
-
setMultiple(updates: Record<string, unknown>, source: 'user' | 'enrichment'): unknown;
|
|
3
|
-
}
|
|
4
|
-
/** 选中值保留用户事件;同行回填使用 enrichment,避免触发被填字段的手工变更副作用。 */
|
|
5
|
-
export declare function applyOptionFillUpdates(writer: OptionFillWriter, nextValues: Record<string, unknown>, optionFill: Record<string, unknown>, inputValues: Record<string, unknown>, optionFillSource?: 'user' | 'enrichment'): void;
|
|
6
|
-
export {};
|