From 27ba504441037666e787ded85b4af2f65be65c17 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 29 4月 2025 18:06:07 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo

---
 HIAWms/web/script/plugins/vite-plugin-widget-provider.ts |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/HIAWms/web/script/plugins/vite-plugin-widget-provider.ts b/HIAWms/web/script/plugins/vite-plugin-widget-provider.ts
new file mode 100644
index 0000000..88b58c7
--- /dev/null
+++ b/HIAWms/web/script/plugins/vite-plugin-widget-provider.ts
@@ -0,0 +1,69 @@
+import path from 'path'
+const isWin = process.platform === 'win32'
+const fileRegex = /\.(ts)$/
+const basePath = path.resolve(process.cwd(), './src/widgets')
+// @ts-ignore
+const filePath = isWin ? basePath.replaceAll('\\', '/') : basePath
+const regex = new RegExp(`${filePath}/([^/]*)/index.ts`)
+/**
+ * 鎻愬彇鍏抽敭瀛楃
+ * @param {*} code
+ * @returns
+ */
+const parseCode = (code) => {
+  const importRegion = code.match(/import[^]*?("|')(.*?)\1;/g)
+  const exportDefaultRegion = code.match(/export default [\s\S]*?;/)
+  const canvasView = code.match(/canvasView: ([^,]+),/)
+  const canvasViewValue = canvasView ? canvasView[1] : ''
+
+  const imports = importRegion ? importRegion.join('\n') : ''
+  const exportDefault = exportDefaultRegion ? exportDefaultRegion[0] : ''
+
+  return { imports, exportDefault, canvasView: canvasView[0], canvasViewValue }
+}
+
+/**
+ * 鍚堝苟澶勭悊浠g爜
+ * @param {*} param0
+ * @param {*} originCode
+ */
+const mergeCodeString = (
+  { imports, exportDefault, canvasView, canvasViewValue },
+  originCode
+) => {
+  const code = `${imports}\n${exportDefault}`
+  if (
+    canvasView.includes('provider(') &&
+    originCode.includes('provider/index')
+  ) {
+    return code
+  }
+
+  const providerCode = 'import { provider } from "@/provider/index";'
+
+  const exportDefaultCode = exportDefault.replace(
+    canvasView,
+    `canvasView: provider(${canvasViewValue}),`
+  )
+  return `${imports}\n${providerCode}\n${exportDefaultCode}`
+}
+
+export default function VitePluginWidgetProvider(): any {
+  return {
+    name: 'vite-plugin-widget-provider',
+    apply: 'build',
+
+    transform(code, id) {
+      if (fileRegex.test(id)) {
+        if (regex.test(id)) {
+          const codeData = parseCode(code)
+          const transformCode = mergeCodeString(codeData, code)
+          return {
+            code: transformCode,
+            map: null, // 濡傛灉鍙灏嗘彁渚� source map
+          }
+        }
+      }
+    },
+  }
+}

--
Gitblit v1.9.3