feat: 实现多订单班支持系统
主要功能: - 修改RequirementModal支持12个订单班选择 - 添加OrderClassIconMap图标映射组件 - Store中添加selectedOrderClass状态管理 - WorkflowPage支持传递orderClass参数 - web_result添加URL参数切换功能 - 创建order-class-handler.js动态处理页面主题 技术改进: - 创建软链接关联订单班数据目录 - 生成wenlu.json和food.json数据结构 - 删除重复的web_result目录 - 添加测试页面test-order-class.html 影响范围: - 展会策划系统现支持12个订单班 - 结果展示页面自动适配不同订单班主题 - 用户可选择不同行业生成对应方案 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
127
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-languages-highlightjs.js
generated
vendored
Normal file
127
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-languages-highlightjs.js
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
'use strict';
|
||||
/*
|
||||
* Build javascript passthrough modules for highlight.js languages
|
||||
*/
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const camel = require('to-camel-case');
|
||||
const autogenMessage =
|
||||
'//\n// This file has been auto-generated by the `npm run build-languages-hljs` task\n//\n\n';
|
||||
|
||||
function makeImportName(name) {
|
||||
if (name === '1c') {
|
||||
return 'oneC';
|
||||
}
|
||||
return camel(name);
|
||||
}
|
||||
|
||||
function createAsyncLanguageLoaderLine(file) {
|
||||
const fileWithoutJS = file.split('.js')[0];
|
||||
const importName = makeImportName(fileWithoutJS);
|
||||
|
||||
return ` ${importName}: createLanguageAsyncLoader("${importName}", () => import(/* webpackChunkName: "react-syntax-highlighter_languages_highlight_${importName}" */ "highlight.js/lib/languages/${fileWithoutJS}")),`;
|
||||
}
|
||||
|
||||
function createAsyncLanguageLoadersIndex(files) {
|
||||
let lines = [
|
||||
`import createLanguageAsyncLoader from "./create-language-async-loader"`,
|
||||
`export default {`
|
||||
];
|
||||
|
||||
lines = lines.concat(files.map(file => createAsyncLanguageLoaderLine(file)));
|
||||
lines.push(`}`);
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/async-languages/hljs.js`),
|
||||
lines.join('\n'),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createSupportedLanguagesArray(files) {
|
||||
let lines = [autogenMessage, `export default [`];
|
||||
lines = lines.concat(files.map(file => `\n '${file.split('.js')[0]}',`));
|
||||
lines.push(`\n];\n`);
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/languages/hljs/supported-languages.js`),
|
||||
lines.join(''),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createLanguagePassthroughModule(file) {
|
||||
const fileWithoutJS = file.split('.js')[0];
|
||||
const importName = makeImportName(fileWithoutJS);
|
||||
const lines = [
|
||||
`import ${importName} from "highlight.js/lib/languages/${fileWithoutJS}"`,
|
||||
`export default ${importName}`,
|
||||
''
|
||||
];
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/languages/hljs/${file}`),
|
||||
lines.join(';\n'),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
fs.readdir(
|
||||
path.join(__dirname, '../node_modules/highlight.js/lib/languages'),
|
||||
(err, files) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
files.forEach(createLanguagePassthroughModule);
|
||||
|
||||
createAsyncLanguageLoadersIndex(files);
|
||||
createSupportedLanguagesArray(files);
|
||||
|
||||
const availableLanguageNames = files.map(file => file.split('.js')[0]);
|
||||
const languagesLi = availableLanguageNames.map(
|
||||
name =>
|
||||
`\n* ${makeImportName(name)}${
|
||||
makeImportName(name) !== name ? ` (${name})` : ''
|
||||
}`
|
||||
);
|
||||
const languageMD = `## Available \`language\` imports ${languagesLi.join(
|
||||
''
|
||||
)}`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../AVAILABLE_LANGUAGES_HLJS.MD'),
|
||||
languageMD,
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const defaultExports = availableLanguageNames.map(
|
||||
name =>
|
||||
`export { default as ${makeImportName(name)} } from './${name}';\n`
|
||||
);
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../src/languages/hljs/index.js'),
|
||||
defaultExports.join(''),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
130
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-languages-refractor.js
generated
vendored
Normal file
130
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-languages-refractor.js
generated
vendored
Normal file
@@ -0,0 +1,130 @@
|
||||
'use strict';
|
||||
/*
|
||||
* Build javascript passthrough modules for highlight.js languages
|
||||
*/
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const camel = require('to-camel-case');
|
||||
const autogenMessage =
|
||||
'//\n// This file has been auto-generated by the `npm run build-languages-prism` task\n//\n\n';
|
||||
|
||||
function makeImportName(name) {
|
||||
if (name === '1c') {
|
||||
return 'oneC';
|
||||
}
|
||||
if (name === 'false') {
|
||||
return 'falselang';
|
||||
}
|
||||
return camel(name);
|
||||
}
|
||||
|
||||
function createLanguagePassthroughModule(file) {
|
||||
const importName = makeImportName(file.split('.js')[0]);
|
||||
const lines = [
|
||||
`import ${importName} from "refractor/lang/${file}";`,
|
||||
`export default ${importName}`,
|
||||
''
|
||||
];
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/languages/prism/${file}`),
|
||||
lines.join(';\n'),
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createAsyncLanguageLoaderLine(file) {
|
||||
const fileWithoutJS = file.split('.js')[0];
|
||||
const importName = makeImportName(fileWithoutJS);
|
||||
|
||||
return ` ${importName}: createLanguageAsyncLoader("${importName}", () => import(/* webpackChunkName: "react-syntax-highlighter_languages_refractor_${importName}" */ "refractor/lang/${file}")),`;
|
||||
}
|
||||
|
||||
function createSupportedLanguagesArray(files) {
|
||||
let lines = [autogenMessage, `export default [`];
|
||||
lines = lines.concat(files.map(file => `\n '${file.split('.js')[0]}',`));
|
||||
lines.push(`\n];\n`);
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/languages/prism/supported-languages.js`),
|
||||
lines.join(''),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createAsyncLanguageLoadersIndex(files) {
|
||||
let lines = [
|
||||
`import createLanguageAsyncLoader from "./create-language-async-loader"`,
|
||||
`export default {`
|
||||
];
|
||||
|
||||
lines = lines.concat(files.map(file => createAsyncLanguageLoaderLine(file)));
|
||||
lines.push(`}`);
|
||||
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/async-languages/prism.js`),
|
||||
lines.join('\n'),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
fs.readdir(
|
||||
path.join(__dirname, '../node_modules/refractor/lang'),
|
||||
(err, files) => {
|
||||
console.log(files);
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
files.forEach(createLanguagePassthroughModule);
|
||||
|
||||
createAsyncLanguageLoadersIndex(files);
|
||||
createSupportedLanguagesArray(files);
|
||||
|
||||
const availableLanguageNames = files.map(file => file.split('.js')[0]);
|
||||
console.log(availableLanguageNames.join('\n'));
|
||||
const languagesLi = availableLanguageNames.map(
|
||||
name =>
|
||||
`\n* ${makeImportName(name)}${
|
||||
makeImportName(name) !== name ? ` (${name})` : ''
|
||||
}`
|
||||
);
|
||||
const languageMD = `## Available \`language\` imports ${languagesLi.join(
|
||||
''
|
||||
)}`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../AVAILABLE_LANGUAGES_PRISM.MD'),
|
||||
languageMD,
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const defaultExports = availableLanguageNames.map(
|
||||
name =>
|
||||
`export { default as ${makeImportName(name)} } from './${name}';\n`
|
||||
);
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../src/languages/prism/index.js'),
|
||||
defaultExports.join(''),
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
131
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-stylesheets-highlightjs.js
generated
vendored
Normal file
131
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-stylesheets-highlightjs.js
generated
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
'use strict';
|
||||
/*
|
||||
* Quick and dirty script to build javascript stylesheets from highlight.js css
|
||||
*/
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const css = require('css');
|
||||
const camel = require('to-camel-case');
|
||||
const autogenMessage =
|
||||
'//\n// This file has been auto-generated by the `npm run build-styles-hljs` task\n//\n\n';
|
||||
|
||||
fs.readdir(
|
||||
path.join(__dirname, '../node_modules/highlight.js/styles'),
|
||||
(err, files) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
files.forEach(file => {
|
||||
if (file.includes('.css')) {
|
||||
createJavascriptStyleSheet(file);
|
||||
}
|
||||
});
|
||||
const onlyCSSFiles = files.filter(file => file.includes('.css'));
|
||||
const availableStyleNames = onlyCSSFiles.map(file =>
|
||||
file.split('.css')[0] === 'default'
|
||||
? 'default-style'
|
||||
: file.split('.css')[0]
|
||||
);
|
||||
const styles = availableStyleNames.map(name => `\n* ${camel(name)}`);
|
||||
const defaultExports = availableStyleNames.map(
|
||||
name => `export { default as ${camel(name)} } from './${name}';\n`
|
||||
);
|
||||
const styleMD = `## Available \`stylesheet\` props ${styles.join('')}`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../AVAILABLE_STYLES_HLJS.MD'),
|
||||
styleMD,
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../src/styles/hljs/index.js'),
|
||||
defaultExports.join(''),
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const demoStylesArray = `${autogenMessage}export default [${availableStyleNames
|
||||
.sort()
|
||||
.map(style => `\n '${style}'`)}\n];`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../demo/styles/hljs.js'),
|
||||
demoStylesArray,
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
function createJavascriptStyleSheet(file) {
|
||||
const ignoreStyleWithThis = '.hljs a';
|
||||
const fileWithoutCSS =
|
||||
file.split('.css')[0] === 'default'
|
||||
? 'default-style'
|
||||
: file.split('.css')[0];
|
||||
fs.readFile(
|
||||
path.join(__dirname, `../node_modules/highlight.js/styles/${file}`),
|
||||
'utf-8',
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
const javacriptStylesheet = css
|
||||
.parse(data)
|
||||
.stylesheet.rules.reduce((sheet, rule) => {
|
||||
if (rule.type === 'rule') {
|
||||
const style = rule.selectors.reduce((selectors, selector) => {
|
||||
if (!selector.includes(ignoreStyleWithThis)) {
|
||||
const selectorObject = rule.declarations.reduce(
|
||||
(declarations, declaration) => {
|
||||
if (
|
||||
declaration.type === 'declaration' &&
|
||||
declaration.property
|
||||
) {
|
||||
declarations[camel(declaration.property)] =
|
||||
declaration.value;
|
||||
}
|
||||
return declarations;
|
||||
},
|
||||
{}
|
||||
);
|
||||
selectors[selector.substring(1)] = selectorObject;
|
||||
}
|
||||
return selectors;
|
||||
}, {});
|
||||
sheet = Object.keys(style).reduce((stylesheet, selector) => {
|
||||
if (stylesheet[selector]) {
|
||||
stylesheet[selector] = Object.assign(
|
||||
{},
|
||||
stylesheet[selector],
|
||||
style[selector]
|
||||
);
|
||||
} else {
|
||||
stylesheet[selector] = style[selector];
|
||||
}
|
||||
return stylesheet;
|
||||
}, sheet);
|
||||
}
|
||||
return sheet;
|
||||
}, {});
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/styles/hljs/${fileWithoutCSS}.js`),
|
||||
`export default ${JSON.stringify(javacriptStylesheet, null, 4)}`,
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
153
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-stylesheets-refractor.js
generated
vendored
Normal file
153
backups/exhibition-demo-backup-20250928-210916/node_modules/react-syntax-highlighter/scripts/build-stylesheets-refractor.js
generated
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
'use strict';
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const css = require('css');
|
||||
const camel = require('to-camel-case');
|
||||
const autogenMessage =
|
||||
'//\n// This file has been auto-generated by the `npm run build-styles-prism` task\n//\n\n';
|
||||
|
||||
let directories = [
|
||||
'../node_modules/prismjs/themes',
|
||||
'../node_modules/prism-themes/themes'
|
||||
];
|
||||
|
||||
directories.map(directory => {
|
||||
fs.readdir(path.join(__dirname, directory), (err, files) => {
|
||||
files.forEach(file => {
|
||||
if (file.includes('.css') && !file.includes('.min')) {
|
||||
createJavascriptStyleSheet(file, directory);
|
||||
}
|
||||
});
|
||||
updateDocs(files);
|
||||
});
|
||||
});
|
||||
|
||||
function getSimpleFilename(filename) {
|
||||
let nameWithoutExtension = filename.split('.css')[0].split('prism-')[1];
|
||||
if (filename === 'prism.css') nameWithoutExtension = 'prism';
|
||||
if (filename === 'prism.min.css') nameWithoutExtension = 'prism.min';
|
||||
return nameWithoutExtension;
|
||||
}
|
||||
|
||||
let allFiles = [];
|
||||
let callCount = 0;
|
||||
function updateDocs(files) {
|
||||
allFiles = allFiles.concat(files);
|
||||
callCount += 1;
|
||||
|
||||
if (callCount != directories.length) {
|
||||
return;
|
||||
}
|
||||
const onlyCSSFiles = allFiles.filter(file => file.includes('.css'));
|
||||
const onlyNonMinifiedCSS = onlyCSSFiles.filter(
|
||||
file => !file.includes('.min')
|
||||
);
|
||||
const availableStyleNames = onlyNonMinifiedCSS.map(file =>
|
||||
getSimpleFilename(file)
|
||||
);
|
||||
const styles = availableStyleNames.map(name => `\n* ${camel(name)}`);
|
||||
const defaultExports = availableStyleNames.map(
|
||||
name => `export { default as ${camel(name)} } from './${name}';\n`
|
||||
);
|
||||
const styleMD = `## Available \`stylesheet\` props ${styles.join('')}`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../AVAILABLE_STYLES_PRISM.MD'),
|
||||
styleMD,
|
||||
() => {}
|
||||
);
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../src/styles/prism/index.js'),
|
||||
defaultExports.join(''),
|
||||
() => {}
|
||||
);
|
||||
|
||||
const demoStylesArray = `${autogenMessage}export default [${availableStyleNames
|
||||
.sort()
|
||||
.map(style => `\n '${style}'`)}\n];`;
|
||||
fs.writeFile(
|
||||
path.join(__dirname, '../demo/styles/prism.js'),
|
||||
demoStylesArray,
|
||||
err => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createJavascriptStyleSheet(file, directory) {
|
||||
let fileWithoutCSS = getSimpleFilename(file);
|
||||
console.log(fileWithoutCSS);
|
||||
|
||||
fs.readFile(
|
||||
path.join(__dirname, `${directory}/${file}`),
|
||||
'utf-8',
|
||||
(err, data) => {
|
||||
const javacriptStylesheet = css
|
||||
.parse(data)
|
||||
.stylesheet.rules.reduce((sheet, rule) => {
|
||||
if (rule.type === 'rule') {
|
||||
const style = rule.selectors.reduce((selectors, selector) => {
|
||||
const selectorObject = rule.declarations.reduce(
|
||||
(declarations, declaration) => {
|
||||
if (
|
||||
declaration.type === 'declaration' &&
|
||||
declaration.property
|
||||
) {
|
||||
const camelCaseDeclarationProp = camel(
|
||||
declaration.property
|
||||
);
|
||||
const key =
|
||||
camelCaseDeclarationProp.includes('moz') ||
|
||||
camelCaseDeclarationProp.includes('webkit') ||
|
||||
(camelCaseDeclarationProp[0] === 'o' &&
|
||||
!camelCaseDeclarationProp.includes('overflow'))
|
||||
? `${camelCaseDeclarationProp
|
||||
.substring(0, 1)
|
||||
.toUpperCase()}${camelCaseDeclarationProp.substring(
|
||||
1
|
||||
)}`
|
||||
: camelCaseDeclarationProp;
|
||||
declarations[key] = declaration.value;
|
||||
}
|
||||
return declarations;
|
||||
},
|
||||
{}
|
||||
);
|
||||
|
||||
if (selector.substring(0, 6) === '.token') {
|
||||
selector = selector.substring(7);
|
||||
|
||||
// Regex to fix Prism theme selectors
|
||||
// - Remove further `.token` classes
|
||||
// - Remove the space (descendant combinator)
|
||||
// to allow for styling multiple classes
|
||||
// Ref: https://github.com/react-syntax-highlighter/react-syntax-highlighter/pull/305
|
||||
selector = selector.replace(/(?<=\w) (\.token)?(?=\.)/g, '');
|
||||
}
|
||||
selectors[selector] = selectorObject;
|
||||
return selectors;
|
||||
}, {});
|
||||
sheet = Object.keys(style).reduce((stylesheet, selector) => {
|
||||
if (stylesheet[selector]) {
|
||||
stylesheet[selector] = Object.assign(
|
||||
{},
|
||||
stylesheet[selector],
|
||||
style[selector]
|
||||
);
|
||||
} else {
|
||||
stylesheet[selector] = style[selector];
|
||||
}
|
||||
return stylesheet;
|
||||
}, sheet);
|
||||
}
|
||||
return sheet;
|
||||
}, {});
|
||||
fs.writeFile(
|
||||
path.join(__dirname, `../src/styles/prism/${fileWithoutCSS}.js`),
|
||||
`export default ${JSON.stringify(javacriptStylesheet, null, 4)}`,
|
||||
() => {}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user