@next-shared/form 0.9.2 → 0.10.0

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.
@@ -222,6 +222,9 @@ class FormStore extends _PubSub.PubSub {
222
222
  resetValidateState() {
223
223
  this.publish(`reset.validate`, null);
224
224
  }
225
+ scrollToField(name) {
226
+ this.publish(`${name}.scroll.to`, null);
227
+ }
225
228
  onWatch(name, event, callback, options) {
226
229
  const field = (0, _classPrivateFieldGet6.default)(_fields, this).get(name);
227
230
  if (field) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormStore.js","names":["_lodash","require","_PubSub","uid","Field","field","detail","constructor","name","_fields","WeakMap","_options","_formData","_initData","_FormStore_brand","WeakSet","FormStore","PubSub","getInstance","options","instance","get","set","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Map","_classPrivateFieldSet2","setField","_classPrivateFieldGet6","getAllValues","allFields","_assertClassBrand2","_getAllFields","call","formData","Object","fromEntries","entries","map","k","v","includes","filter","item","length","setInitValue","values","isEmitValuseChange","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","value","isNil","publish","newFormData","forEach","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","resetValidateState","getFieldsValue","removeField","delete","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","isEmpty","undefined","stringValue","String","reg","RegExp","test","checkMin","checkMax","numberValue","parseFloat","parsedValidator","Array","isArray","getValueFromEvent","e","target","checked","onWatch","event","realValue","needValidate","apply","onChange","exports","keys","key","_detail","notRender","_defineProperty2"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty, isNil } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\nexport interface FieldDetail {\n name: string;\n label?: string;\n notRender?: boolean;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n type?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()].filter((key) => {\n return !this.#fields.get(key)!.detail?.notRender;\n });\n }\n\n getAllValues() {\n const allFields = this.#getAllFields();\n const formData = Object.fromEntries(\n Object.entries(this.#formData)\n .map(([k, v]) => {\n if (allFields.includes(k)) {\n return [k, v];\n }\n return [];\n })\n .filter((item) => item.length)\n );\n return formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (!isNil(value)) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n delete this.#formData[name];\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n this.resetValidateState();\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n removeField(name: string) {\n this.#fields.delete(name);\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(\n true,\n results.filter((result) => result?.type !== \"normal\")\n );\n return false;\n } else {\n const formData = this.getAllValues();\n callback(false, formData);\n return formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (\n validate: Validate,\n value: string | number | null | undefined\n ): MessageBody => {\n const { required, pattern, message, type, min, max, validator } =\n validate;\n const label = getName();\n\n if (\n typeof value === \"object\"\n ? isEmpty(value)\n : value === undefined || value === \"\"\n ) {\n if (required) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n return messageBody(\"\", \"normal\");\n }\n\n const stringValue = String(value);\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(stringValue)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n const checkMin = typeof min === \"number\";\n const checkMax = typeof max === \"number\";\n if (checkMin || checkMax) {\n if (type === \"number\") {\n const numberValue =\n typeof value === \"number\" ? value : parseFloat(value as string);\n if (checkMin && numberValue < min) {\n return messageBody(message?.min || `${label}不能小于 ${min}`);\n }\n if (checkMax && numberValue > max) {\n return messageBody(message?.max || `${label}不能大于 ${max}`);\n }\n } else {\n if (checkMin && stringValue.length < min) {\n return messageBody(\n message?.min || `${label}至少包含 ${min} 个字符`\n );\n }\n if (checkMax && stringValue.length > max) {\n return messageBody(\n message?.max || `${label}不能超过 ${max} 个字符`\n );\n }\n }\n }\n\n if (validator) {\n let result = \"\";\n let parsedValidator = [];\n if (Array.isArray(validator)) {\n parsedValidator = validator;\n } else {\n parsedValidator.push(validator);\n }\n\n for (const v of parsedValidator) {\n result = v(value);\n\n if (result) {\n break;\n }\n }\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = { name, ...valid(validate, validateValue as string) };\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n onWatch(\n name: string,\n event: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n // default first params is value\n const realValue = Array.isArray(value) ? value[0] : value;\n\n this.setFieldsValue({\n [name]: realValue,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.apply(this, value);\n }\n }\n\n onChange(\n name: string,\n value: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormStore.js","names":["_lodash","require","_PubSub","uid","Field","field","detail","constructor","name","_fields","WeakMap","_options","_formData","_initData","_FormStore_brand","WeakSet","FormStore","PubSub","getInstance","options","instance","get","set","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Map","_classPrivateFieldSet2","setField","_classPrivateFieldGet6","getAllValues","allFields","_assertClassBrand2","_getAllFields","call","formData","Object","fromEntries","entries","map","k","v","includes","filter","item","length","setInitValue","values","isEmitValuseChange","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","value","isNil","publish","newFormData","forEach","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","resetValidateState","getFieldsValue","removeField","delete","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","isEmpty","undefined","stringValue","String","reg","RegExp","test","checkMin","checkMax","numberValue","parseFloat","parsedValidator","Array","isArray","getValueFromEvent","e","target","checked","scrollToField","onWatch","event","realValue","needValidate","apply","onChange","exports","keys","key","_detail","notRender","_defineProperty2"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty, isNil } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\nexport interface FieldDetail {\n name: string;\n label?: string;\n notRender?: boolean;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n type?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()].filter((key) => {\n return !this.#fields.get(key)!.detail?.notRender;\n });\n }\n\n getAllValues() {\n const allFields = this.#getAllFields();\n const formData = Object.fromEntries(\n Object.entries(this.#formData)\n .map(([k, v]) => {\n if (allFields.includes(k)) {\n return [k, v];\n }\n return [];\n })\n .filter((item) => item.length)\n );\n return formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (!isNil(value)) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n delete this.#formData[name];\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n this.resetValidateState();\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n removeField(name: string) {\n this.#fields.delete(name);\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(\n true,\n results.filter((result) => result?.type !== \"normal\")\n );\n return false;\n } else {\n const formData = this.getAllValues();\n callback(false, formData);\n return formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (\n validate: Validate,\n value: string | number | null | undefined\n ): MessageBody => {\n const { required, pattern, message, type, min, max, validator } =\n validate;\n const label = getName();\n\n if (\n typeof value === \"object\"\n ? isEmpty(value)\n : value === undefined || value === \"\"\n ) {\n if (required) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n return messageBody(\"\", \"normal\");\n }\n\n const stringValue = String(value);\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(stringValue)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n const checkMin = typeof min === \"number\";\n const checkMax = typeof max === \"number\";\n if (checkMin || checkMax) {\n if (type === \"number\") {\n const numberValue =\n typeof value === \"number\" ? value : parseFloat(value as string);\n if (checkMin && numberValue < min) {\n return messageBody(message?.min || `${label}不能小于 ${min}`);\n }\n if (checkMax && numberValue > max) {\n return messageBody(message?.max || `${label}不能大于 ${max}`);\n }\n } else {\n if (checkMin && stringValue.length < min) {\n return messageBody(\n message?.min || `${label}至少包含 ${min} 个字符`\n );\n }\n if (checkMax && stringValue.length > max) {\n return messageBody(\n message?.max || `${label}不能超过 ${max} 个字符`\n );\n }\n }\n }\n\n if (validator) {\n let result = \"\";\n let parsedValidator = [];\n if (Array.isArray(validator)) {\n parsedValidator = validator;\n } else {\n parsedValidator.push(validator);\n }\n\n for (const v of parsedValidator) {\n result = v(value);\n\n if (result) {\n break;\n }\n }\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = { name, ...valid(validate, validateValue as string) };\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n scrollToField(name: string) {\n this.publish(`${name}.scroll.to`, null);\n }\n\n onWatch(\n name: string,\n event: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n // default first params is value\n const realValue = Array.isArray(value) ? value[0] : value;\n\n this.setFieldsValue({\n [name]: realValue,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.apply(this, value);\n }\n }\n\n onChange(\n name: string,\n value: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getContentRectsInTextarea = getContentRectsInTextarea;
7
+ var _getMirroredStyle = require("./utils/getMirroredStyle.js");
8
+ let hiddenElement;
9
+ function getContentRectsInTextarea(textarea, prefix, measureContent) {
10
+ if (!hiddenElement) {
11
+ hiddenElement = document.createElement("div");
12
+ hiddenElement.setAttribute("tab-index", "-1");
13
+ hiddenElement.setAttribute("aria-hidden", "true");
14
+ document.body.appendChild(hiddenElement);
15
+ }
16
+ hiddenElement.setAttribute("style", (0, _getMirroredStyle.getMirroredStyle)(textarea));
17
+ hiddenElement.textContent = prefix;
18
+ const span = document.createElement("span");
19
+ span.textContent = measureContent;
20
+ hiddenElement.appendChild(span);
21
+ const fullRect = span.getBoundingClientRect();
22
+ span.remove();
23
+ if (measureContent.length <= 1) {
24
+ return [fullRect];
25
+ }
26
+ const leadingChar = measureContent[0];
27
+ const leadingSpan = document.createElement("span");
28
+ leadingSpan.textContent = leadingChar;
29
+ hiddenElement.appendChild(leadingSpan);
30
+ const leadingRect = leadingSpan.getBoundingClientRect();
31
+ leadingSpan.remove();
32
+ hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;
33
+ const trailingChar = measureContent[measureContent.length - 1];
34
+ const trailingSpan = document.createElement("span");
35
+ trailingSpan.textContent = trailingChar;
36
+ hiddenElement.appendChild(trailingSpan);
37
+ const trailingRect = trailingSpan.getBoundingClientRect();
38
+ trailingSpan.remove();
39
+ if (leadingRect.top === trailingRect.top) {
40
+ return [fullRect];
41
+ }
42
+ const rects = [];
43
+
44
+ // Leading rect
45
+ rects.push(new DOMRect(leadingRect.left, leadingRect.top, fullRect.right - leadingRect.left, leadingRect.bottom - leadingRect.top));
46
+
47
+ // Middle rect
48
+ const height = trailingRect.top - leadingRect.bottom;
49
+ if (height >= 10) {
50
+ rects.push(new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height));
51
+ }
52
+
53
+ // Trailing rect
54
+ rects.push(new DOMRect(fullRect.left, trailingRect.top, trailingRect.right - fullRect.left, trailingRect.bottom - trailingRect.top));
55
+ return rects;
56
+ }
57
+ //# sourceMappingURL=getContentRectsInTextarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContentRectsInTextarea.js","names":["_getMirroredStyle","require","hiddenElement","getContentRectsInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","getMirroredStyle","textContent","span","fullRect","getBoundingClientRect","remove","length","leadingChar","leadingSpan","leadingRect","slice","trailingChar","trailingSpan","trailingRect","top","rects","push","DOMRect","left","right","bottom","height","width"],"sources":["../../src/getContentRectsInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectsInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n): DOMRect[] {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const fullRect = span.getBoundingClientRect();\n span.remove();\n\n if (measureContent.length <= 1) {\n return [fullRect];\n }\n\n const leadingChar = measureContent[0];\n const leadingSpan = document.createElement(\"span\");\n leadingSpan.textContent = leadingChar;\n hiddenElement.appendChild(leadingSpan);\n const leadingRect = leadingSpan.getBoundingClientRect();\n leadingSpan.remove();\n\n hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;\n const trailingChar = measureContent[measureContent.length - 1];\n const trailingSpan = document.createElement(\"span\");\n trailingSpan.textContent = trailingChar;\n hiddenElement.appendChild(trailingSpan);\n const trailingRect = trailingSpan.getBoundingClientRect();\n trailingSpan.remove();\n\n if (leadingRect.top === trailingRect.top) {\n return [fullRect];\n }\n\n const rects: DOMRect[] = [];\n\n // Leading rect\n rects.push(\n new DOMRect(\n leadingRect.left,\n leadingRect.top,\n fullRect.right - leadingRect.left,\n leadingRect.bottom - leadingRect.top\n )\n );\n\n // Middle rect\n const height = trailingRect.top - leadingRect.bottom;\n if (height >= 10) {\n rects.push(\n new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height)\n );\n }\n\n // Trailing rect\n rects.push(\n new DOMRect(\n fullRect.left,\n trailingRect.top,\n trailingRect.right - fullRect.left,\n trailingRect.bottom - trailingRect.top\n )\n );\n\n return rects;\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/cjs/index.js CHANGED
@@ -80,14 +80,14 @@ Object.keys(_getCaretPositionInTextarea).forEach(function (key) {
80
80
  }
81
81
  });
82
82
  });
83
- var _getContentRectInTextarea = require("./getContentRectInTextarea.js");
84
- Object.keys(_getContentRectInTextarea).forEach(function (key) {
83
+ var _getContentRectsInTextarea = require("./getContentRectsInTextarea.js");
84
+ Object.keys(_getContentRectsInTextarea).forEach(function (key) {
85
85
  if (key === "default" || key === "__esModule") return;
86
- if (key in exports && exports[key] === _getContentRectInTextarea[key]) return;
86
+ if (key in exports && exports[key] === _getContentRectsInTextarea[key]) return;
87
87
  Object.defineProperty(exports, key, {
88
88
  enumerable: true,
89
89
  get: function () {
90
- return _getContentRectInTextarea[key];
90
+ return _getContentRectsInTextarea[key];
91
91
  }
92
92
  });
93
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Form","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_FormItemElement","_FormStore","_interfaces","_pickFormItemProps","_TextareaAutoResize","_getCaretPositionInTextarea","_getContentRectInTextarea"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectInTextarea.js\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_Form","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_FormItemElement","_FormStore","_interfaces","_pickFormItemProps","_TextareaAutoResize","_getCaretPositionInTextarea","_getContentRectsInTextarea"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectsInTextarea.js\";\n"],"mappings":"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","ignoreList":[]}
@@ -220,6 +220,9 @@ export class FormStore extends PubSub {
220
220
  resetValidateState() {
221
221
  this.publish(`reset.validate`, null);
222
222
  }
223
+ scrollToField(name) {
224
+ this.publish(`${name}.scroll.to`, null);
225
+ }
223
226
  onWatch(name, event, callback, options) {
224
227
  const field = _classPrivateFieldGet(_fields, this).get(name);
225
228
  if (field) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormStore.js","names":["isEmpty","isNil","PubSub","uid","Field","constructor","name","detail","_defineProperty","field","_fields","WeakMap","_options","_formData","_initData","_FormStore_brand","WeakSet","FormStore","getInstance","options","instance","get","set","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Map","_classPrivateFieldSet","setField","_classPrivateFieldGet","getAllValues","allFields","_assertClassBrand","_getAllFields","call","formData","Object","fromEntries","entries","map","_ref","k","v","includes","filter","item","length","setInitValue","values","isEmitValuseChange","arguments","undefined","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","value","publish","newFormData","forEach","_ref2","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","resetValidateState","getFieldsValue","removeField","delete","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","stringValue","String","reg","RegExp","test","checkMin","checkMax","numberValue","parseFloat","parsedValidator","Array","isArray","getValueFromEvent","e","target","checked","onWatch","event","_options$needValidate","realValue","needValidate","apply","onChange","_options$needValidate2","keys","key","_detail","notRender"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty, isNil } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\nexport interface FieldDetail {\n name: string;\n label?: string;\n notRender?: boolean;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n type?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()].filter((key) => {\n return !this.#fields.get(key)!.detail?.notRender;\n });\n }\n\n getAllValues() {\n const allFields = this.#getAllFields();\n const formData = Object.fromEntries(\n Object.entries(this.#formData)\n .map(([k, v]) => {\n if (allFields.includes(k)) {\n return [k, v];\n }\n return [];\n })\n .filter((item) => item.length)\n );\n return formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (!isNil(value)) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n delete this.#formData[name];\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n this.resetValidateState();\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n removeField(name: string) {\n this.#fields.delete(name);\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(\n true,\n results.filter((result) => result?.type !== \"normal\")\n );\n return false;\n } else {\n const formData = this.getAllValues();\n callback(false, formData);\n return formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (\n validate: Validate,\n value: string | number | null | undefined\n ): MessageBody => {\n const { required, pattern, message, type, min, max, validator } =\n validate;\n const label = getName();\n\n if (\n typeof value === \"object\"\n ? isEmpty(value)\n : value === undefined || value === \"\"\n ) {\n if (required) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n return messageBody(\"\", \"normal\");\n }\n\n const stringValue = String(value);\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(stringValue)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n const checkMin = typeof min === \"number\";\n const checkMax = typeof max === \"number\";\n if (checkMin || checkMax) {\n if (type === \"number\") {\n const numberValue =\n typeof value === \"number\" ? value : parseFloat(value as string);\n if (checkMin && numberValue < min) {\n return messageBody(message?.min || `${label}不能小于 ${min}`);\n }\n if (checkMax && numberValue > max) {\n return messageBody(message?.max || `${label}不能大于 ${max}`);\n }\n } else {\n if (checkMin && stringValue.length < min) {\n return messageBody(\n message?.min || `${label}至少包含 ${min} 个字符`\n );\n }\n if (checkMax && stringValue.length > max) {\n return messageBody(\n message?.max || `${label}不能超过 ${max} 个字符`\n );\n }\n }\n }\n\n if (validator) {\n let result = \"\";\n let parsedValidator = [];\n if (Array.isArray(validator)) {\n parsedValidator = validator;\n } else {\n parsedValidator.push(validator);\n }\n\n for (const v of parsedValidator) {\n result = v(value);\n\n if (result) {\n break;\n }\n }\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = { name, ...valid(validate, validateValue as string) };\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n onWatch(\n name: string,\n event: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n // default first params is value\n const realValue = Array.isArray(value) ? value[0] : value;\n\n this.setFieldsValue({\n [name]: realValue,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.apply(this, value);\n }\n }\n\n onChange(\n name: string,\n value: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormStore.js","names":["isEmpty","isNil","PubSub","uid","Field","constructor","name","detail","_defineProperty","field","_fields","WeakMap","_options","_formData","_initData","_FormStore_brand","WeakSet","FormStore","getInstance","options","instance","get","set","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Map","_classPrivateFieldSet","setField","_classPrivateFieldGet","getAllValues","allFields","_assertClassBrand","_getAllFields","call","formData","Object","fromEntries","entries","map","_ref","k","v","includes","filter","item","length","setInitValue","values","isEmitValuseChange","arguments","undefined","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","value","publish","newFormData","forEach","_ref2","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","resetValidateState","getFieldsValue","removeField","delete","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","stringValue","String","reg","RegExp","test","checkMin","checkMax","numberValue","parseFloat","parsedValidator","Array","isArray","getValueFromEvent","e","target","checked","scrollToField","onWatch","event","_options$needValidate","realValue","needValidate","apply","onChange","_options$needValidate2","keys","key","_detail","notRender"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty, isNil } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\nexport interface FieldDetail {\n name: string;\n label?: string;\n notRender?: boolean;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n type?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()].filter((key) => {\n return !this.#fields.get(key)!.detail?.notRender;\n });\n }\n\n getAllValues() {\n const allFields = this.#getAllFields();\n const formData = Object.fromEntries(\n Object.entries(this.#formData)\n .map(([k, v]) => {\n if (allFields.includes(k)) {\n return [k, v];\n }\n return [];\n })\n .filter((item) => item.length)\n );\n return formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (!isNil(value)) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n delete this.#formData[name];\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n this.resetValidateState();\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n removeField(name: string) {\n this.#fields.delete(name);\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(\n true,\n results.filter((result) => result?.type !== \"normal\")\n );\n return false;\n } else {\n const formData = this.getAllValues();\n callback(false, formData);\n return formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (\n validate: Validate,\n value: string | number | null | undefined\n ): MessageBody => {\n const { required, pattern, message, type, min, max, validator } =\n validate;\n const label = getName();\n\n if (\n typeof value === \"object\"\n ? isEmpty(value)\n : value === undefined || value === \"\"\n ) {\n if (required) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n return messageBody(\"\", \"normal\");\n }\n\n const stringValue = String(value);\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(stringValue)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n const checkMin = typeof min === \"number\";\n const checkMax = typeof max === \"number\";\n if (checkMin || checkMax) {\n if (type === \"number\") {\n const numberValue =\n typeof value === \"number\" ? value : parseFloat(value as string);\n if (checkMin && numberValue < min) {\n return messageBody(message?.min || `${label}不能小于 ${min}`);\n }\n if (checkMax && numberValue > max) {\n return messageBody(message?.max || `${label}不能大于 ${max}`);\n }\n } else {\n if (checkMin && stringValue.length < min) {\n return messageBody(\n message?.min || `${label}至少包含 ${min} 个字符`\n );\n }\n if (checkMax && stringValue.length > max) {\n return messageBody(\n message?.max || `${label}不能超过 ${max} 个字符`\n );\n }\n }\n }\n\n if (validator) {\n let result = \"\";\n let parsedValidator = [];\n if (Array.isArray(validator)) {\n parsedValidator = validator;\n } else {\n parsedValidator.push(validator);\n }\n\n for (const v of parsedValidator) {\n result = v(value);\n\n if (result) {\n break;\n }\n }\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = { name, ...valid(validate, validateValue as string) };\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n scrollToField(name: string) {\n this.publish(`${name}.scroll.to`, null);\n }\n\n onWatch(\n name: string,\n event: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n // default first params is value\n const realValue = Array.isArray(value) ? value[0] : value;\n\n this.setFieldsValue({\n [name]: realValue,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.apply(this, value);\n }\n }\n\n onChange(\n name: string,\n value: any,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ import { getMirroredStyle } from "./utils/getMirroredStyle.js";
2
+ let hiddenElement;
3
+ export function getContentRectsInTextarea(textarea, prefix, measureContent) {
4
+ if (!hiddenElement) {
5
+ hiddenElement = document.createElement("div");
6
+ hiddenElement.setAttribute("tab-index", "-1");
7
+ hiddenElement.setAttribute("aria-hidden", "true");
8
+ document.body.appendChild(hiddenElement);
9
+ }
10
+ hiddenElement.setAttribute("style", getMirroredStyle(textarea));
11
+ hiddenElement.textContent = prefix;
12
+ const span = document.createElement("span");
13
+ span.textContent = measureContent;
14
+ hiddenElement.appendChild(span);
15
+ const fullRect = span.getBoundingClientRect();
16
+ span.remove();
17
+ if (measureContent.length <= 1) {
18
+ return [fullRect];
19
+ }
20
+ const leadingChar = measureContent[0];
21
+ const leadingSpan = document.createElement("span");
22
+ leadingSpan.textContent = leadingChar;
23
+ hiddenElement.appendChild(leadingSpan);
24
+ const leadingRect = leadingSpan.getBoundingClientRect();
25
+ leadingSpan.remove();
26
+ hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;
27
+ const trailingChar = measureContent[measureContent.length - 1];
28
+ const trailingSpan = document.createElement("span");
29
+ trailingSpan.textContent = trailingChar;
30
+ hiddenElement.appendChild(trailingSpan);
31
+ const trailingRect = trailingSpan.getBoundingClientRect();
32
+ trailingSpan.remove();
33
+ if (leadingRect.top === trailingRect.top) {
34
+ return [fullRect];
35
+ }
36
+ const rects = [];
37
+
38
+ // Leading rect
39
+ rects.push(new DOMRect(leadingRect.left, leadingRect.top, fullRect.right - leadingRect.left, leadingRect.bottom - leadingRect.top));
40
+
41
+ // Middle rect
42
+ const height = trailingRect.top - leadingRect.bottom;
43
+ if (height >= 10) {
44
+ rects.push(new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height));
45
+ }
46
+
47
+ // Trailing rect
48
+ rects.push(new DOMRect(fullRect.left, trailingRect.top, trailingRect.right - fullRect.left, trailingRect.bottom - trailingRect.top));
49
+ return rects;
50
+ }
51
+ //# sourceMappingURL=getContentRectsInTextarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContentRectsInTextarea.js","names":["getMirroredStyle","hiddenElement","getContentRectsInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","textContent","span","fullRect","getBoundingClientRect","remove","length","leadingChar","leadingSpan","leadingRect","slice","trailingChar","trailingSpan","trailingRect","top","rects","push","DOMRect","left","right","bottom","height","width"],"sources":["../../src/getContentRectsInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectsInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n): DOMRect[] {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const fullRect = span.getBoundingClientRect();\n span.remove();\n\n if (measureContent.length <= 1) {\n return [fullRect];\n }\n\n const leadingChar = measureContent[0];\n const leadingSpan = document.createElement(\"span\");\n leadingSpan.textContent = leadingChar;\n hiddenElement.appendChild(leadingSpan);\n const leadingRect = leadingSpan.getBoundingClientRect();\n leadingSpan.remove();\n\n hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;\n const trailingChar = measureContent[measureContent.length - 1];\n const trailingSpan = document.createElement(\"span\");\n trailingSpan.textContent = trailingChar;\n hiddenElement.appendChild(trailingSpan);\n const trailingRect = trailingSpan.getBoundingClientRect();\n trailingSpan.remove();\n\n if (leadingRect.top === trailingRect.top) {\n return [fullRect];\n }\n\n const rects: DOMRect[] = [];\n\n // Leading rect\n rects.push(\n new DOMRect(\n leadingRect.left,\n leadingRect.top,\n fullRect.right - leadingRect.left,\n leadingRect.bottom - leadingRect.top\n )\n );\n\n // Middle rect\n const height = trailingRect.top - leadingRect.bottom;\n if (height >= 10) {\n rects.push(\n new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height)\n );\n }\n\n // Trailing rect\n rects.push(\n new DOMRect(\n fullRect.left,\n trailingRect.top,\n trailingRect.right - fullRect.left,\n trailingRect.bottom - trailingRect.top\n )\n );\n\n return rects;\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -5,5 +5,5 @@ export * from "./interfaces.js";
5
5
  export * from "./pickFormItemProps.js";
6
6
  export * from "./TextareaAutoResize.js";
7
7
  export * from "./getCaretPositionInTextarea.js";
8
- export * from "./getContentRectInTextarea.js";
8
+ export * from "./getContentRectsInTextarea.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectInTextarea.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,sBAAsB;AACpC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,+BAA+B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectsInTextarea.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,sBAAsB;AACpC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,gCAAgC","ignoreList":[]}
@@ -53,6 +53,7 @@ export declare class FormStore extends PubSub {
53
53
  } | undefined;
54
54
  getValueFromEvent(e: React.ChangeEvent): any;
55
55
  resetValidateState(): void;
56
+ scrollToField(name: string): void;
56
57
  onWatch(name: string, event: any, callback?: (v: string) => void, options?: WatchOptions): void;
57
58
  onChange(name: string, value: any, callback?: (v: string) => void, options?: WatchOptions): void;
58
59
  }
@@ -0,0 +1 @@
1
+ export declare function getContentRectsInTextarea(textarea: HTMLTextAreaElement, prefix: string, measureContent: string): DOMRect[];
@@ -5,4 +5,4 @@ export * from "./interfaces.js";
5
5
  export * from "./pickFormItemProps.js";
6
6
  export * from "./TextareaAutoResize.js";
7
7
  export * from "./getCaretPositionInTextarea.js";
8
- export * from "./getContentRectInTextarea.js";
8
+ export * from "./getContentRectsInTextarea.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-shared/form",
3
- "version": "0.9.2",
3
+ "version": "0.10.0",
4
4
  "homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/shared/form",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,5 +48,5 @@
48
48
  "@next-core/test-next": "^2.0.1",
49
49
  "concurrently": "^9.1.0"
50
50
  },
51
- "gitHead": "92d114b51e52f53f6ee4acc8322ad2caebbb3667"
51
+ "gitHead": "64d652c91d75223495dc940639ad773f727e7266"
52
52
  }
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getContentRectInTextarea = getContentRectInTextarea;
7
- var _getMirroredStyle = require("./utils/getMirroredStyle.js");
8
- let hiddenElement;
9
- function getContentRectInTextarea(textarea, prefix, measureContent) {
10
- if (!hiddenElement) {
11
- hiddenElement = document.createElement("div");
12
- hiddenElement.setAttribute("tab-index", "-1");
13
- hiddenElement.setAttribute("aria-hidden", "true");
14
- document.body.appendChild(hiddenElement);
15
- }
16
- hiddenElement.setAttribute("style", (0, _getMirroredStyle.getMirroredStyle)(textarea));
17
- hiddenElement.textContent = prefix;
18
- const span = document.createElement("span");
19
- span.textContent = measureContent;
20
- hiddenElement.appendChild(span);
21
- const rect = span.getBoundingClientRect();
22
- span.remove();
23
- return rect;
24
- }
25
- //# sourceMappingURL=getContentRectInTextarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getContentRectInTextarea.js","names":["_getMirroredStyle","require","hiddenElement","getContentRectInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","getMirroredStyle","textContent","span","rect","getBoundingClientRect","remove"],"sources":["../../src/getContentRectInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n) {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const rect = span.getBoundingClientRect();\n span.remove();\n return rect;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAEA,IAAIC,aAAyC;AAEtC,SAASC,wBAAwBA,CACtCC,QAA6B,EAC7BC,MAAc,EACdC,cAAsB,EACtB;EACA,IAAI,CAACJ,aAAa,EAAE;IAClBA,aAAa,GAAGK,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CN,aAAa,CAACO,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;IAC7CP,aAAa,CAACO,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACjDF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACT,aAAa,CAAC;EAC1C;EACAA,aAAa,CAACO,YAAY,CAAC,OAAO,EAAE,IAAAG,kCAAgB,EAACR,QAAQ,CAAC,CAAC;EAE/DF,aAAa,CAACW,WAAW,GAAGR,MAAM;EAElC,MAAMS,IAAI,GAAGP,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3CM,IAAI,CAACD,WAAW,GAAGP,cAAc;EACjCJ,aAAa,CAACS,WAAW,CAACG,IAAI,CAAC;EAE/B,MAAMC,IAAI,GAAGD,IAAI,CAACE,qBAAqB,CAAC,CAAC;EACzCF,IAAI,CAACG,MAAM,CAAC,CAAC;EACb,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -1,19 +0,0 @@
1
- import { getMirroredStyle } from "./utils/getMirroredStyle.js";
2
- let hiddenElement;
3
- export function getContentRectInTextarea(textarea, prefix, measureContent) {
4
- if (!hiddenElement) {
5
- hiddenElement = document.createElement("div");
6
- hiddenElement.setAttribute("tab-index", "-1");
7
- hiddenElement.setAttribute("aria-hidden", "true");
8
- document.body.appendChild(hiddenElement);
9
- }
10
- hiddenElement.setAttribute("style", getMirroredStyle(textarea));
11
- hiddenElement.textContent = prefix;
12
- const span = document.createElement("span");
13
- span.textContent = measureContent;
14
- hiddenElement.appendChild(span);
15
- const rect = span.getBoundingClientRect();
16
- span.remove();
17
- return rect;
18
- }
19
- //# sourceMappingURL=getContentRectInTextarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getContentRectInTextarea.js","names":["getMirroredStyle","hiddenElement","getContentRectInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","textContent","span","rect","getBoundingClientRect","remove"],"sources":["../../src/getContentRectInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n) {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const rect = span.getBoundingClientRect();\n span.remove();\n return rect;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,6BAA6B;AAE9D,IAAIC,aAAyC;AAE7C,OAAO,SAASC,wBAAwBA,CACtCC,QAA6B,EAC7BC,MAAc,EACdC,cAAsB,EACtB;EACA,IAAI,CAACJ,aAAa,EAAE;IAClBA,aAAa,GAAGK,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CN,aAAa,CAACO,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;IAC7CP,aAAa,CAACO,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACjDF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACT,aAAa,CAAC;EAC1C;EACAA,aAAa,CAACO,YAAY,CAAC,OAAO,EAAER,gBAAgB,CAACG,QAAQ,CAAC,CAAC;EAE/DF,aAAa,CAACU,WAAW,GAAGP,MAAM;EAElC,MAAMQ,IAAI,GAAGN,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3CK,IAAI,CAACD,WAAW,GAAGN,cAAc;EACjCJ,aAAa,CAACS,WAAW,CAACE,IAAI,CAAC;EAE/B,MAAMC,IAAI,GAAGD,IAAI,CAACE,qBAAqB,CAAC,CAAC;EACzCF,IAAI,CAACG,MAAM,CAAC,CAAC;EACb,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -1 +0,0 @@
1
- export declare function getContentRectInTextarea(textarea: HTMLTextAreaElement, prefix: string, measureContent: string): DOMRect;