This is page 1 of 35. Use http://codebase.md/alibaba/formily?page={x} to view the full context. # Directory Structure ``` ├── .all-contributorsrc ├── .codecov.yml ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .github │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows │ ├── check-pr-title.yml │ ├── ci.yml │ ├── commitlint.yml │ ├── issue-open-check.yml │ ├── package-size.yml │ └── pr-welcome.yml ├── .gitignore ├── .prettierrc.js ├── .umirc.js ├── .vscode │ └── cspell.json ├── .yarnrc ├── CHANGELOG.md ├── commitlint.config.js ├── devtools │ ├── .eslintrc │ └── chrome-extension │ ├── .npmignore │ ├── assets │ │ └── img │ │ ├── loading.svg │ │ └── logo │ │ ├── 128x128.png │ │ ├── 16x16.png │ │ ├── 38x38.png │ │ ├── 48x48.png │ │ ├── error.png │ │ ├── gray.png │ │ └── scalable.png │ ├── config │ │ ├── webpack.base.ts │ │ ├── webpack.dev.ts │ │ └── webpack.prod.ts │ ├── LICENSE.md │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── components │ │ │ │ ├── FieldTree.tsx │ │ │ │ ├── filter.ts │ │ │ │ ├── LeftPanel.tsx │ │ │ │ ├── RightPanel.tsx │ │ │ │ ├── SearchBox.tsx │ │ │ │ └── Tabs.tsx │ │ │ ├── demo.tsx │ │ │ └── index.tsx │ │ └── extension │ │ ├── backend.ts │ │ ├── background.ts │ │ ├── content.ts │ │ ├── devpanel.tsx │ │ ├── devtools.tsx │ │ ├── inject.ts │ │ ├── manifest.json │ │ ├── popup.tsx │ │ └── views │ │ ├── devpanel.ejs │ │ ├── devtools.ejs │ │ └── popup.ejs │ ├── tsconfig.build.json │ └── tsconfig.json ├── docs │ ├── functions │ │ ├── contributors.ts │ │ └── npm-search.ts │ ├── guide │ │ ├── advanced │ │ │ ├── async.md │ │ │ ├── async.zh-CN.md │ │ │ ├── build.md │ │ │ ├── build.zh-CN.md │ │ │ ├── business-logic.md │ │ │ ├── business-logic.zh-CN.md │ │ │ ├── calculator.md │ │ │ ├── calculator.zh-CN.md │ │ │ ├── controlled.md │ │ │ ├── controlled.zh-CN.md │ │ │ ├── custom.md │ │ │ ├── custom.zh-CN.md │ │ │ ├── destructor.md │ │ │ ├── destructor.zh-CN.md │ │ │ ├── input.less │ │ │ ├── layout.md │ │ │ ├── layout.zh-CN.md │ │ │ ├── linkages.md │ │ │ ├── linkages.zh-CN.md │ │ │ ├── validate.md │ │ │ └── validate.zh-CN.md │ │ ├── contribution.md │ │ ├── contribution.zh-CN.md │ │ ├── form-builder.md │ │ ├── form-builder.zh-CN.md │ │ ├── index.md │ │ ├── index.zh-CN.md │ │ ├── issue-helper.md │ │ ├── issue-helper.zh-CN.md │ │ ├── learn-formily.md │ │ ├── learn-formily.zh-CN.md │ │ ├── quick-start.md │ │ ├── quick-start.zh-CN.md │ │ ├── scenes │ │ │ ├── dialog-drawer.md │ │ │ ├── dialog-drawer.zh-CN.md │ │ │ ├── edit-detail.md │ │ │ ├── edit-detail.zh-CN.md │ │ │ ├── index.less │ │ │ ├── login-register.md │ │ │ ├── login-register.zh-CN.md │ │ │ ├── more.md │ │ │ ├── more.zh-CN.md │ │ │ ├── query-list.md │ │ │ ├── query-list.zh-CN.md │ │ │ ├── step-form.md │ │ │ ├── step-form.zh-CN.md │ │ │ ├── tab-form.md │ │ │ ├── tab-form.zh-CN.md │ │ │ └── VerifyCode.tsx │ │ ├── upgrade.md │ │ └── upgrade.zh-CN.md │ ├── index.md │ ├── index.zh-CN.md │ └── site │ ├── Contributors.less │ ├── Contributors.tsx │ ├── QrCode.less │ ├── QrCode.tsx │ ├── Section.less │ ├── Section.tsx │ └── styles.less ├── global.config.ts ├── jest.config.js ├── lerna.json ├── LICENSE.md ├── package.json ├── packages │ ├── .eslintrc │ ├── antd │ │ ├── __tests__ │ │ │ ├── moment.spec.ts │ │ │ └── sideEffects.spec.ts │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── build-style.ts │ │ ├── create-style.ts │ │ ├── docs │ │ │ ├── components │ │ │ │ ├── ArrayCards.md │ │ │ │ ├── ArrayCards.zh-CN.md │ │ │ │ ├── ArrayCollapse.md │ │ │ │ ├── ArrayCollapse.zh-CN.md │ │ │ │ ├── ArrayItems.md │ │ │ │ ├── ArrayItems.zh-CN.md │ │ │ │ ├── ArrayTable.md │ │ │ │ ├── ArrayTable.zh-CN.md │ │ │ │ ├── ArrayTabs.md │ │ │ │ ├── ArrayTabs.zh-CN.md │ │ │ │ ├── Cascader.md │ │ │ │ ├── Cascader.zh-CN.md │ │ │ │ ├── Checkbox.md │ │ │ │ ├── Checkbox.zh-CN.md │ │ │ │ ├── DatePicker.md │ │ │ │ ├── DatePicker.zh-CN.md │ │ │ │ ├── Editable.md │ │ │ │ ├── Editable.zh-CN.md │ │ │ │ ├── Form.md │ │ │ │ ├── Form.zh-CN.md │ │ │ │ ├── FormButtonGroup.md │ │ │ │ ├── FormButtonGroup.zh-CN.md │ │ │ │ ├── FormCollapse.md │ │ │ │ ├── FormCollapse.zh-CN.md │ │ │ │ ├── FormDialog.md │ │ │ │ ├── FormDialog.zh-CN.md │ │ │ │ ├── FormDrawer.md │ │ │ │ ├── FormDrawer.zh-CN.md │ │ │ │ ├── FormGrid.md │ │ │ │ ├── FormGrid.zh-CN.md │ │ │ │ ├── FormItem.md │ │ │ │ ├── FormItem.zh-CN.md │ │ │ │ ├── FormLayout.md │ │ │ │ ├── FormLayout.zh-CN.md │ │ │ │ ├── FormStep.md │ │ │ │ ├── FormStep.zh-CN.md │ │ │ │ ├── FormTab.md │ │ │ │ ├── FormTab.zh-CN.md │ │ │ │ ├── index.md │ │ │ │ ├── index.zh-CN.md │ │ │ │ ├── Input.md │ │ │ │ ├── Input.zh-CN.md │ │ │ │ ├── NumberPicker.md │ │ │ │ ├── NumberPicker.zh-CN.md │ │ │ │ ├── Password.md │ │ │ │ ├── Password.zh-CN.md │ │ │ │ ├── PreviewText.md │ │ │ │ ├── PreviewText.zh-CN.md │ │ │ │ ├── Radio.md │ │ │ │ ├── Radio.zh-CN.md │ │ │ │ ├── Reset.md │ │ │ │ ├── Reset.zh-CN.md │ │ │ │ ├── Select.md │ │ │ │ ├── Select.zh-CN.md │ │ │ │ ├── SelectTable.md │ │ │ │ ├── SelectTable.zh-CN.md │ │ │ │ ├── Space.md │ │ │ │ ├── Space.zh-CN.md │ │ │ │ ├── Submit.md │ │ │ │ ├── Submit.zh-CN.md │ │ │ │ ├── Switch.md │ │ │ │ ├── Switch.zh-CN.md │ │ │ │ ├── TimePicker.md │ │ │ │ ├── TimePicker.zh-CN.md │ │ │ │ ├── Transfer.md │ │ │ │ ├── Transfer.zh-CN.md │ │ │ │ ├── TreeSelect.md │ │ │ │ ├── TreeSelect.zh-CN.md │ │ │ │ ├── Upload.md │ │ │ │ └── Upload.zh-CN.md │ │ │ ├── index.md │ │ │ └── index.zh-CN.md │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __builtins__ │ │ │ │ ├── hooks │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useClickAway.ts │ │ │ │ │ └── usePrefixCls.ts │ │ │ │ ├── index.ts │ │ │ │ ├── loading.ts │ │ │ │ ├── moment.ts │ │ │ │ ├── pickDataProps.ts │ │ │ │ ├── portal.tsx │ │ │ │ ├── render.ts │ │ │ │ └── sort.tsx │ │ │ ├── array-base │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── array-cards │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── array-collapse │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── array-items │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── array-table │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── array-tabs │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── cascader │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── checkbox │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── date-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── editable │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── form │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── form-button-group │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── form-collapse │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-dialog │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-drawer │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-grid │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── form-item │ │ │ │ ├── animation.less │ │ │ │ ├── grid.less │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── form-layout │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ ├── style.ts │ │ │ │ └── useResponsiveFormLayout.ts │ │ │ ├── form-step │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-tab │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── index.ts │ │ │ ├── input │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── number-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── password │ │ │ │ ├── index.tsx │ │ │ │ ├── PasswordStrength.tsx │ │ │ │ └── style.ts │ │ │ ├── preview-text │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── radio │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ └── style.ts │ │ │ ├── reset │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── select │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── select-table │ │ │ │ ├── index.tsx │ │ │ │ ├── style.less │ │ │ │ ├── style.ts │ │ │ │ ├── useCheckSlackly.tsx │ │ │ │ ├── useFilterOptions.tsx │ │ │ │ ├── useFlatOptions.tsx │ │ │ │ ├── useSize.tsx │ │ │ │ ├── useTitleAddon.tsx │ │ │ │ └── utils.ts │ │ │ ├── space │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── style.less │ │ │ ├── style.ts │ │ │ ├── submit │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── switch │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── time-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── transfer │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── tree-select │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ └── upload │ │ │ ├── index.tsx │ │ │ ├── placeholder.ts │ │ │ └── style.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── benchmark │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ └── index.tsx │ │ ├── template.ejs │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ ├── webpack.base.ts │ │ ├── webpack.dev.ts │ │ └── webpack.prod.ts │ ├── core │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── docs │ │ │ ├── api │ │ │ │ ├── entry │ │ │ │ │ ├── ActionResponse.less │ │ │ │ │ ├── ActionResponse.tsx │ │ │ │ │ ├── createForm.md │ │ │ │ │ ├── createForm.zh-CN.md │ │ │ │ │ ├── FieldEffectHooks.md │ │ │ │ │ ├── FieldEffectHooks.zh-CN.md │ │ │ │ │ ├── FormChecker.md │ │ │ │ │ ├── FormChecker.zh-CN.md │ │ │ │ │ ├── FormEffectHooks.md │ │ │ │ │ ├── FormEffectHooks.zh-CN.md │ │ │ │ │ ├── FormHooksAPI.md │ │ │ │ │ ├── FormHooksAPI.zh-CN.md │ │ │ │ │ ├── FormPath.md │ │ │ │ │ ├── FormPath.zh-CN.md │ │ │ │ │ ├── FormValidatorRegistry.md │ │ │ │ │ └── FormValidatorRegistry.zh-CN.md │ │ │ │ └── models │ │ │ │ ├── ArrayField.md │ │ │ │ ├── ArrayField.zh-CN.md │ │ │ │ ├── Field.md │ │ │ │ ├── Field.zh-CN.md │ │ │ │ ├── Form.md │ │ │ │ ├── Form.zh-CN.md │ │ │ │ ├── ObjectField.md │ │ │ │ ├── ObjectField.zh-CN.md │ │ │ │ ├── Query.md │ │ │ │ ├── Query.zh-CN.md │ │ │ │ ├── VoidField.md │ │ │ │ └── VoidField.zh-CN.md │ │ │ ├── guide │ │ │ │ ├── architecture.md │ │ │ │ ├── architecture.zh-CN.md │ │ │ │ ├── field.md │ │ │ │ ├── field.zh-CN.md │ │ │ │ ├── form.md │ │ │ │ ├── form.zh-CN.md │ │ │ │ ├── index.md │ │ │ │ ├── index.zh-CN.md │ │ │ │ ├── mvvm.md │ │ │ │ ├── mvvm.zh-CN.md │ │ │ │ ├── values.md │ │ │ │ └── values.zh-CN.md │ │ │ ├── index.md │ │ │ └── index.zh-CN.md │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── array.spec.ts │ │ │ │ ├── effects.spec.ts │ │ │ │ ├── externals.spec.ts │ │ │ │ ├── field.spec.ts │ │ │ │ ├── form.spec.ts │ │ │ │ ├── graph.spec.ts │ │ │ │ ├── heart.spec.ts │ │ │ │ ├── internals.spec.ts │ │ │ │ ├── lifecycle.spec.ts │ │ │ │ ├── object.spec.ts │ │ │ │ ├── shared.ts │ │ │ │ └── void.spec.ts │ │ │ ├── effects │ │ │ │ ├── index.ts │ │ │ │ ├── onFieldEffects.ts │ │ │ │ └── onFormEffects.ts │ │ │ ├── global.d.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ ├── ArrayField.ts │ │ │ │ ├── BaseField.ts │ │ │ │ ├── Field.ts │ │ │ │ ├── Form.ts │ │ │ │ ├── Graph.ts │ │ │ │ ├── Heart.ts │ │ │ │ ├── index.ts │ │ │ │ ├── LifeCycle.ts │ │ │ │ ├── ObjectField.ts │ │ │ │ ├── Query.ts │ │ │ │ ├── types.ts │ │ │ │ └── VoidField.ts │ │ │ ├── shared │ │ │ │ ├── checkers.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── effective.ts │ │ │ │ ├── externals.ts │ │ │ │ └── internals.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── element │ │ ├── .npmignore │ │ ├── build-style.ts │ │ ├── create-style.ts │ │ ├── docs │ │ │ ├── .vuepress │ │ │ │ ├── components │ │ │ │ │ ├── createCodeSandBox.js │ │ │ │ │ ├── dumi-previewer.vue │ │ │ │ │ └── highlight.js │ │ │ │ ├── config.js │ │ │ │ ├── enhanceApp.js │ │ │ │ ├── styles │ │ │ │ │ └── index.styl │ │ │ │ └── util.js │ │ │ ├── demos │ │ │ │ ├── guide │ │ │ │ │ ├── array-cards │ │ │ │ │ │ ├── effects-json-schema.vue │ │ │ │ │ │ ├── effects-markup-schema.vue │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── array-collapse │ │ │ │ │ │ ├── effects-json-schema.vue │ │ │ │ │ │ ├── effects-markup-schema.vue │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── array-items │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── array-table │ │ │ │ │ │ ├── effects-json-schema.vue │ │ │ │ │ │ ├── effects-markup-schema.vue │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── array-tabs │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── cascader │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── checkbox │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── date-picker │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── editable │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── form-button-group.vue │ │ │ │ │ ├── form-collapse │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── form-dialog │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── form-drawer │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── form-grid │ │ │ │ │ │ ├── form.vue │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── native.vue │ │ │ │ │ ├── form-item │ │ │ │ │ │ ├── bordered-none.vue │ │ │ │ │ │ ├── common.vue │ │ │ │ │ │ ├── feedback.vue │ │ │ │ │ │ ├── inset.vue │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ ├── size.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── form-layout │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── form-step │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── form-tab │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ └── markup-schema.vue │ │ │ │ │ ├── form.vue │ │ │ │ │ ├── input │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── input-number │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── password │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── preview-text │ │ │ │ │ │ ├── base.vue │ │ │ │ │ │ └── extend.vue │ │ │ │ │ ├── radio │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── reset │ │ │ │ │ │ ├── base.vue │ │ │ │ │ │ ├── force.vue │ │ │ │ │ │ └── validate.vue │ │ │ │ │ ├── select │ │ │ │ │ │ ├── json-schema-async.vue │ │ │ │ │ │ ├── json-schema-sync.vue │ │ │ │ │ │ ├── markup-schema-async-search.vue │ │ │ │ │ │ ├── markup-schema-async.vue │ │ │ │ │ │ ├── markup-schema-sync.vue │ │ │ │ │ │ ├── template-async.vue │ │ │ │ │ │ └── template-sync.vue │ │ │ │ │ ├── space │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── submit │ │ │ │ │ │ ├── base.vue │ │ │ │ │ │ └── loading.vue │ │ │ │ │ ├── switch │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── time-picker │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ ├── transfer │ │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ │ └── template.vue │ │ │ │ │ └── upload │ │ │ │ │ ├── json-schema.vue │ │ │ │ │ ├── markup-schema.vue │ │ │ │ │ └── template.vue │ │ │ │ └── index.vue │ │ │ ├── guide │ │ │ │ ├── array-cards.md │ │ │ │ ├── array-collapse.md │ │ │ │ ├── array-items.md │ │ │ │ ├── array-table.md │ │ │ │ ├── array-tabs.md │ │ │ │ ├── cascader.md │ │ │ │ ├── checkbox.md │ │ │ │ ├── date-picker.md │ │ │ │ ├── editable.md │ │ │ │ ├── form-button-group.md │ │ │ │ ├── form-collapse.md │ │ │ │ ├── form-dialog.md │ │ │ │ ├── form-drawer.md │ │ │ │ ├── form-grid.md │ │ │ │ ├── form-item.md │ │ │ │ ├── form-layout.md │ │ │ │ ├── form-step.md │ │ │ │ ├── form-tab.md │ │ │ │ ├── form.md │ │ │ │ ├── index.md │ │ │ │ ├── input-number.md │ │ │ │ ├── input.md │ │ │ │ ├── password.md │ │ │ │ ├── preview-text.md │ │ │ │ ├── radio.md │ │ │ │ ├── reset.md │ │ │ │ ├── select.md │ │ │ │ ├── space.md │ │ │ │ ├── submit.md │ │ │ │ ├── switch.md │ │ │ │ ├── time-picker.md │ │ │ │ ├── transfer.md │ │ │ │ └── upload.md │ │ │ └── README.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __builtins__ │ │ │ │ ├── configs │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shared │ │ │ │ │ ├── create-context.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── loading.ts │ │ │ │ │ ├── portal.ts │ │ │ │ │ ├── resolve-component.ts │ │ │ │ │ ├── transform-component.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── styles │ │ │ │ └── common.scss │ │ │ ├── array-base │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── array-cards │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── array-collapse │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── array-items │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── array-table │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── array-tabs │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── cascader │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── checkbox │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── date-picker │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── editable │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── el-form │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── el-form-item │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── form │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── form-button-group │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── form-collapse │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── form-dialog │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── form-drawer │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── form-grid │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── form-item │ │ │ │ ├── animation.scss │ │ │ │ ├── grid.scss │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ ├── style.ts │ │ │ │ └── var.scss │ │ │ ├── form-layout │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ ├── style.ts │ │ │ │ └── useResponsiveFormLayout.ts │ │ │ ├── form-step │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── form-tab │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── index.ts │ │ │ ├── input │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── input-number │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── password │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── preview-text │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── radio │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── reset │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── select │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── space │ │ │ │ ├── index.ts │ │ │ │ ├── style.scss │ │ │ │ └── style.ts │ │ │ ├── style.ts │ │ │ ├── submit │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── switch │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── time-picker │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── transfer │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ └── upload │ │ │ ├── index.ts │ │ │ └── style.ts │ │ ├── transformer.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── grid │ │ ├── .npmignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── index.ts │ │ │ └── observer.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── json-schema │ │ ├── .npmignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── schema.spec.ts.snap │ │ │ │ ├── compiler.spec.ts │ │ │ │ ├── patches.spec.ts │ │ │ │ ├── schema.spec.ts │ │ │ │ ├── server-validate.spec.ts │ │ │ │ ├── shared.spec.ts │ │ │ │ ├── transformer.spec.ts │ │ │ │ └── traverse.spec.ts │ │ │ ├── compiler.ts │ │ │ ├── global.d.ts │ │ │ ├── index.ts │ │ │ ├── patches.ts │ │ │ ├── polyfills │ │ │ │ ├── index.ts │ │ │ │ └── SPECIFICATION_1_0.ts │ │ │ ├── schema.ts │ │ │ ├── shared.ts │ │ │ ├── transformer.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── next │ │ ├── __tests__ │ │ │ ├── moment.spec.ts │ │ │ └── sideEffects.spec.ts │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── build-style.ts │ │ ├── create-style.ts │ │ ├── docs │ │ │ ├── components │ │ │ │ ├── ArrayCards.md │ │ │ │ ├── ArrayCards.zh-CN.md │ │ │ │ ├── ArrayCollapse.md │ │ │ │ ├── ArrayCollapse.zh-CN.md │ │ │ │ ├── ArrayItems.md │ │ │ │ ├── ArrayItems.zh-CN.md │ │ │ │ ├── ArrayTable.md │ │ │ │ ├── ArrayTable.zh-CN.md │ │ │ │ ├── Cascader.md │ │ │ │ ├── Cascader.zh-CN.md │ │ │ │ ├── Checkbox.md │ │ │ │ ├── Checkbox.zh-CN.md │ │ │ │ ├── DatePicker.md │ │ │ │ ├── DatePicker.zh-CN.md │ │ │ │ ├── DatePicker2.md │ │ │ │ ├── DatePicker2.zh-CN.md │ │ │ │ ├── Editable.md │ │ │ │ ├── Editable.zh-CN.md │ │ │ │ ├── Form.md │ │ │ │ ├── Form.zh-CN.md │ │ │ │ ├── FormButtonGroup.md │ │ │ │ ├── FormButtonGroup.zh-CN.md │ │ │ │ ├── FormCollapse.md │ │ │ │ ├── FormCollapse.zh-CN.md │ │ │ │ ├── FormDialog.md │ │ │ │ ├── FormDialog.zh-CN.md │ │ │ │ ├── FormDrawer.md │ │ │ │ ├── FormDrawer.zh-CN.md │ │ │ │ ├── FormGrid.md │ │ │ │ ├── FormGrid.zh-CN.md │ │ │ │ ├── FormItem.md │ │ │ │ ├── FormItem.zh-CN.md │ │ │ │ ├── FormLayout.md │ │ │ │ ├── FormLayout.zh-CN.md │ │ │ │ ├── FormStep.md │ │ │ │ ├── FormStep.zh-CN.md │ │ │ │ ├── FormTab.md │ │ │ │ ├── FormTab.zh-CN.md │ │ │ │ ├── index.md │ │ │ │ ├── index.zh-CN.md │ │ │ │ ├── Input.md │ │ │ │ ├── Input.zh-CN.md │ │ │ │ ├── NumberPicker.md │ │ │ │ ├── NumberPicker.zh-CN.md │ │ │ │ ├── Password.md │ │ │ │ ├── Password.zh-CN.md │ │ │ │ ├── PreviewText.md │ │ │ │ ├── PreviewText.zh-CN.md │ │ │ │ ├── Radio.md │ │ │ │ ├── Radio.zh-CN.md │ │ │ │ ├── Reset.md │ │ │ │ ├── Reset.zh-CN.md │ │ │ │ ├── Select.md │ │ │ │ ├── Select.zh-CN.md │ │ │ │ ├── SelectTable.md │ │ │ │ ├── SelectTable.zh-CN.md │ │ │ │ ├── Space.md │ │ │ │ ├── Space.zh-CN.md │ │ │ │ ├── Submit.md │ │ │ │ ├── Submit.zh-CN.md │ │ │ │ ├── Switch.md │ │ │ │ ├── Switch.zh-CN.md │ │ │ │ ├── TimePicker.md │ │ │ │ ├── TimePicker.zh-CN.md │ │ │ │ ├── TimePicker2.md │ │ │ │ ├── TimePicker2.zh-CN.md │ │ │ │ ├── Transfer.md │ │ │ │ ├── Transfer.zh-CN.md │ │ │ │ ├── TreeSelect.md │ │ │ │ ├── TreeSelect.zh-CN.md │ │ │ │ ├── Upload.md │ │ │ │ └── Upload.zh-CN.md │ │ │ ├── index.md │ │ │ └── index.zh-CN.md │ │ ├── LESENCE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __builtins__ │ │ │ │ ├── empty.tsx │ │ │ │ ├── hooks │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useClickAway.ts │ │ │ │ │ └── usePrefixCls.ts │ │ │ │ ├── icons.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── loading.ts │ │ │ │ ├── mapSize.ts │ │ │ │ ├── mapStatus.ts │ │ │ │ ├── moment.ts │ │ │ │ ├── pickDataProps.ts │ │ │ │ ├── portal.tsx │ │ │ │ ├── render.ts │ │ │ │ └── toArray.ts │ │ │ ├── array-base │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── array-cards │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── array-collapse │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── array-items │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── array-table │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── cascader │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── checkbox │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── date-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── date-picker2 │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── editable │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── form │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── form-button-group │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── form-collapse │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-dialog │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-drawer │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-grid │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── form-item │ │ │ │ ├── animation.scss │ │ │ │ ├── grid.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ ├── scss │ │ │ │ │ └── variable.scss │ │ │ │ └── style.ts │ │ │ ├── form-layout │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ ├── style.ts │ │ │ │ └── useResponsiveFormLayout.ts │ │ │ ├── form-step │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── form-tab │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── index.ts │ │ │ ├── input │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── main.scss │ │ │ ├── number-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── password │ │ │ │ ├── index.tsx │ │ │ │ ├── PasswordStrength.tsx │ │ │ │ └── style.ts │ │ │ ├── preview-text │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── radio │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── reset │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── select │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── select-table │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ ├── style.ts │ │ │ │ ├── useCheckSlackly.tsx │ │ │ │ ├── useFilterOptions.tsx │ │ │ │ ├── useFlatOptions.tsx │ │ │ │ ├── useSize.tsx │ │ │ │ ├── useTitleAddon.tsx │ │ │ │ └── utils.ts │ │ │ ├── space │ │ │ │ ├── index.tsx │ │ │ │ ├── main.scss │ │ │ │ └── style.ts │ │ │ ├── style.ts │ │ │ ├── submit │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── switch │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── time-picker │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── time-picker2 │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── transfer │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── tree-select │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ └── upload │ │ │ ├── index.tsx │ │ │ ├── main.scss │ │ │ ├── placeholder.ts │ │ │ └── style.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── path │ │ ├── .npmignore │ │ ├── benchmark.ts │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── accessor.spec.ts │ │ │ │ ├── basic.spec.ts │ │ │ │ ├── match.spec.ts │ │ │ │ ├── parser.spec.ts │ │ │ │ └── share.spec.ts │ │ │ ├── contexts.ts │ │ │ ├── destructor.ts │ │ │ ├── index.ts │ │ │ ├── matcher.ts │ │ │ ├── parser.ts │ │ │ ├── shared.ts │ │ │ ├── tokenizer.ts │ │ │ ├── tokens.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── react │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── docs │ │ │ ├── api │ │ │ │ ├── components │ │ │ │ │ ├── ArrayField.md │ │ │ │ │ ├── ArrayField.zh-CN.md │ │ │ │ │ ├── ExpressionScope.md │ │ │ │ │ ├── ExpressionScope.zh-CN.md │ │ │ │ │ ├── Field.md │ │ │ │ │ ├── Field.zh-CN.md │ │ │ │ │ ├── FormConsumer.md │ │ │ │ │ ├── FormConsumer.zh-CN.md │ │ │ │ │ ├── FormProvider.md │ │ │ │ │ ├── FormProvider.zh-CN.md │ │ │ │ │ ├── ObjectField.md │ │ │ │ │ ├── ObjectField.zh-CN.md │ │ │ │ │ ├── RecordScope.md │ │ │ │ │ ├── RecordScope.zh-CN.md │ │ │ │ │ ├── RecordsScope.md │ │ │ │ │ ├── RecordsScope.zh-CN.md │ │ │ │ │ ├── RecursionField.md │ │ │ │ │ ├── RecursionField.zh-CN.md │ │ │ │ │ ├── SchemaField.md │ │ │ │ │ ├── SchemaField.zh-CN.md │ │ │ │ │ ├── VoidField.md │ │ │ │ │ └── VoidField.zh-CN.md │ │ │ │ ├── hooks │ │ │ │ │ ├── useExpressionScope.md │ │ │ │ │ ├── useExpressionScope.zh-CN.md │ │ │ │ │ ├── useField.md │ │ │ │ │ ├── useField.zh-CN.md │ │ │ │ │ ├── useFieldSchema.md │ │ │ │ │ ├── useFieldSchema.zh-CN.md │ │ │ │ │ ├── useForm.md │ │ │ │ │ ├── useForm.zh-CN.md │ │ │ │ │ ├── useFormEffects.md │ │ │ │ │ ├── useFormEffects.zh-CN.md │ │ │ │ │ ├── useParentForm.md │ │ │ │ │ └── useParentForm.zh-CN.md │ │ │ │ └── shared │ │ │ │ ├── connect.md │ │ │ │ ├── connect.zh-CN.md │ │ │ │ ├── context.md │ │ │ │ ├── context.zh-CN.md │ │ │ │ ├── mapProps.md │ │ │ │ ├── mapProps.zh-CN.md │ │ │ │ ├── mapReadPretty.md │ │ │ │ ├── mapReadPretty.zh-CN.md │ │ │ │ ├── observer.md │ │ │ │ ├── observer.zh-CN.md │ │ │ │ ├── Schema.md │ │ │ │ └── Schema.zh-CN.md │ │ │ ├── guide │ │ │ │ ├── architecture.md │ │ │ │ ├── architecture.zh-CN.md │ │ │ │ ├── concept.md │ │ │ │ ├── concept.zh-CN.md │ │ │ │ ├── index.md │ │ │ │ └── index.zh-CN.md │ │ │ ├── index.md │ │ │ └── index.zh-CN.md │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── expression.spec.tsx │ │ │ │ ├── field.spec.tsx │ │ │ │ ├── form.spec.tsx │ │ │ │ ├── schema.json.spec.tsx │ │ │ │ ├── schema.markup.spec.tsx │ │ │ │ └── shared.tsx │ │ │ ├── components │ │ │ │ ├── ArrayField.tsx │ │ │ │ ├── ExpressionScope.tsx │ │ │ │ ├── Field.tsx │ │ │ │ ├── FormConsumer.tsx │ │ │ │ ├── FormProvider.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── ObjectField.tsx │ │ │ │ ├── ReactiveField.tsx │ │ │ │ ├── RecordScope.tsx │ │ │ │ ├── RecordsScope.tsx │ │ │ │ ├── RecursionField.tsx │ │ │ │ ├── SchemaField.tsx │ │ │ │ └── VoidField.tsx │ │ │ ├── global.d.ts │ │ │ ├── hooks │ │ │ │ ├── index.ts │ │ │ │ ├── useAttach.ts │ │ │ │ ├── useExpressionScope.ts │ │ │ │ ├── useField.ts │ │ │ │ ├── useFieldSchema.ts │ │ │ │ ├── useForm.ts │ │ │ │ ├── useFormEffects.ts │ │ │ │ └── useParentForm.ts │ │ │ ├── index.ts │ │ │ ├── shared │ │ │ │ ├── connect.ts │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ └── render.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── reactive │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── benchmark.ts │ │ ├── docs │ │ │ ├── api │ │ │ │ ├── action.md │ │ │ │ ├── action.zh-CN.md │ │ │ │ ├── autorun.md │ │ │ │ ├── autorun.zh-CN.md │ │ │ │ ├── batch.md │ │ │ │ ├── batch.zh-CN.md │ │ │ │ ├── define.md │ │ │ │ ├── define.zh-CN.md │ │ │ │ ├── hasCollected.md │ │ │ │ ├── hasCollected.zh-CN.md │ │ │ │ ├── markObservable.md │ │ │ │ ├── markObservable.zh-CN.md │ │ │ │ ├── markRaw.md │ │ │ │ ├── markRaw.zh-CN.md │ │ │ │ ├── model.md │ │ │ │ ├── model.zh-CN.md │ │ │ │ ├── observable.md │ │ │ │ ├── observable.zh-CN.md │ │ │ │ ├── observe.md │ │ │ │ ├── observe.zh-CN.md │ │ │ │ ├── raw.md │ │ │ │ ├── raw.zh-CN.md │ │ │ │ ├── react │ │ │ │ │ ├── observer.md │ │ │ │ │ └── observer.zh-CN.md │ │ │ │ ├── reaction.md │ │ │ │ ├── reaction.zh-CN.md │ │ │ │ ├── toJS.md │ │ │ │ ├── toJS.zh-CN.md │ │ │ │ ├── tracker.md │ │ │ │ ├── tracker.zh-CN.md │ │ │ │ ├── typeChecker.md │ │ │ │ ├── typeChecker.zh-CN.md │ │ │ │ ├── untracked.md │ │ │ │ ├── untracked.zh-CN.md │ │ │ │ └── vue │ │ │ │ ├── observer.md │ │ │ │ └── observer.zh-CN.md │ │ │ ├── guide │ │ │ │ ├── best-practice.md │ │ │ │ ├── best-practice.zh-CN.md │ │ │ │ ├── concept.md │ │ │ │ ├── concept.zh-CN.md │ │ │ │ ├── index.md │ │ │ │ └── index.zh-CN.md │ │ │ ├── index.md │ │ │ └── index.zh-CN.md │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── action.spec.ts │ │ │ │ ├── annotations.spec.ts │ │ │ │ ├── array.spec.ts │ │ │ │ ├── autorun.spec.ts │ │ │ │ ├── batch.spec.ts │ │ │ │ ├── collections-map.spec.ts │ │ │ │ ├── collections-set.spec.ts │ │ │ │ ├── collections-weakmap.spec.ts │ │ │ │ ├── collections-weakset.spec.ts │ │ │ │ ├── define.spec.ts │ │ │ │ ├── externals.spec.ts │ │ │ │ ├── hasCollected.spec.ts │ │ │ │ ├── observable.spec.ts │ │ │ │ ├── observe.spec.ts │ │ │ │ ├── tracker.spec.ts │ │ │ │ └── untracked.spec.ts │ │ │ ├── action.ts │ │ │ ├── annotations │ │ │ │ ├── box.ts │ │ │ │ ├── computed.ts │ │ │ │ ├── index.ts │ │ │ │ ├── observable.ts │ │ │ │ ├── ref.ts │ │ │ │ └── shallow.ts │ │ │ ├── array.ts │ │ │ ├── autorun.ts │ │ │ ├── batch.ts │ │ │ ├── checkers.ts │ │ │ ├── environment.ts │ │ │ ├── externals.ts │ │ │ ├── global.d.ts │ │ │ ├── handlers.ts │ │ │ ├── index.ts │ │ │ ├── internals.ts │ │ │ ├── model.ts │ │ │ ├── observable.ts │ │ │ ├── observe.ts │ │ │ ├── reaction.ts │ │ │ ├── tracker.ts │ │ │ ├── tree.ts │ │ │ ├── types.ts │ │ │ └── untracked.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── reactive-react │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── hooks │ │ │ │ ├── index.ts │ │ │ │ ├── useCompatEffect.ts │ │ │ │ ├── useCompatFactory.ts │ │ │ │ ├── useDidUpdate.ts │ │ │ │ ├── useForceUpdate.ts │ │ │ │ ├── useLayoutEffect.ts │ │ │ │ └── useObserver.ts │ │ │ ├── index.ts │ │ │ ├── observer.ts │ │ │ ├── shared │ │ │ │ ├── gc.ts │ │ │ │ ├── global.ts │ │ │ │ ├── immediate.ts │ │ │ │ └── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── reactive-test-cases-for-react18 │ │ ├── .npmignore │ │ ├── .umirc.js │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ ├── index.js │ │ │ └── MySlowList.js │ │ ├── template.ejs │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ ├── webpack.base.ts │ │ ├── webpack.dev.ts │ │ └── webpack.prod.ts │ ├── reactive-vue │ │ ├── .npmignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ └── observer.spec.ts │ │ │ ├── hooks │ │ │ │ ├── index.ts │ │ │ │ └── useObserver.ts │ │ │ ├── index.ts │ │ │ ├── observer │ │ │ │ ├── collectData.ts │ │ │ │ ├── index.ts │ │ │ │ ├── observerInVue2.ts │ │ │ │ └── observerInVue3.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── shared │ │ ├── .npmignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ └── index.spec.ts │ │ │ ├── array.ts │ │ │ ├── case.ts │ │ │ ├── checkers.ts │ │ │ ├── clone.ts │ │ │ ├── compare.ts │ │ │ ├── defaults.ts │ │ │ ├── deprecate.ts │ │ │ ├── global.ts │ │ │ ├── index.ts │ │ │ ├── instanceof.ts │ │ │ ├── isEmpty.ts │ │ │ ├── merge.ts │ │ │ ├── middleware.ts │ │ │ ├── path.ts │ │ │ ├── string.ts │ │ │ ├── subscribable.ts │ │ │ └── uid.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── validator │ │ ├── .npmignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── README.md │ │ ├── rollup.config.js │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── parser.spec.ts │ │ │ │ ├── registry.spec.ts │ │ │ │ └── validator.spec.ts │ │ │ ├── formats.ts │ │ │ ├── index.ts │ │ │ ├── locale.ts │ │ │ ├── parser.ts │ │ │ ├── registry.ts │ │ │ ├── rules.ts │ │ │ ├── template.ts │ │ │ ├── types.ts │ │ │ └── validator.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ └── vue │ ├── .npmignore │ ├── bin │ │ ├── formily-vue-fix.js │ │ └── formily-vue-switch.js │ ├── docs │ │ ├── .vuepress │ │ │ ├── components │ │ │ │ ├── createCodeSandBox.js │ │ │ │ ├── dumi-previewer.vue │ │ │ │ └── highlight.js │ │ │ ├── config.js │ │ │ ├── enhanceApp.js │ │ │ └── styles │ │ │ └── index.styl │ │ ├── api │ │ │ ├── components │ │ │ │ ├── array-field.md │ │ │ │ ├── expression-scope.md │ │ │ │ ├── field.md │ │ │ │ ├── form-consumer.md │ │ │ │ ├── form-provider.md │ │ │ │ ├── object-field.md │ │ │ │ ├── recursion-field-with-component.md │ │ │ │ ├── recursion-field.md │ │ │ │ ├── schema-field-with-schema.md │ │ │ │ ├── schema-field.md │ │ │ │ └── void-field.md │ │ │ ├── hooks │ │ │ │ ├── use-field-schema.md │ │ │ │ ├── use-field.md │ │ │ │ ├── use-form-effects.md │ │ │ │ ├── use-form.md │ │ │ │ └── use-parent-form.md │ │ │ └── shared │ │ │ ├── connect.md │ │ │ ├── injections.md │ │ │ ├── map-props.md │ │ │ ├── map-read-pretty.md │ │ │ ├── observer.md │ │ │ └── schema.md │ │ ├── demos │ │ │ ├── api │ │ │ │ ├── components │ │ │ │ │ ├── array-field.vue │ │ │ │ │ ├── expression-scope.vue │ │ │ │ │ ├── field.vue │ │ │ │ │ ├── form-consumer.vue │ │ │ │ │ ├── form-provider.vue │ │ │ │ │ ├── object-field.vue │ │ │ │ │ ├── recursion-field-with-component.vue │ │ │ │ │ ├── recursion-field.vue │ │ │ │ │ ├── schema-field-with-schema.vue │ │ │ │ │ ├── schema-field.vue │ │ │ │ │ └── void-field.vue │ │ │ │ ├── hooks │ │ │ │ │ ├── use-field-schema.vue │ │ │ │ │ ├── use-field.vue │ │ │ │ │ ├── use-form-effects.vue │ │ │ │ │ ├── use-form.vue │ │ │ │ │ └── use-parent-form.vue │ │ │ │ └── shared │ │ │ │ ├── connect.vue │ │ │ │ ├── map-props.vue │ │ │ │ ├── map-read-pretty.vue │ │ │ │ └── observer.vue │ │ │ ├── index.vue │ │ │ └── questions │ │ │ ├── default-slot.vue │ │ │ ├── events.vue │ │ │ ├── named-slot.vue │ │ │ └── scoped-slot.vue │ │ ├── guide │ │ │ ├── architecture.md │ │ │ ├── concept.md │ │ │ └── README.md │ │ ├── questions │ │ │ └── README.md │ │ └── README.md │ ├── package.json │ ├── README.md │ ├── rollup.config.js │ ├── scripts │ │ ├── postinstall.js │ │ ├── switch-cli.js │ │ └── utils.js │ ├── src │ │ ├── __tests__ │ │ │ ├── expression.scope.spec.ts │ │ │ ├── field.spec.ts │ │ │ ├── form.spec.ts │ │ │ ├── schema.json.spec.ts │ │ │ ├── schema.markup.spec.ts │ │ │ ├── shared.spec.ts │ │ │ └── utils.spec.ts │ │ ├── components │ │ │ ├── ArrayField.ts │ │ │ ├── ExpressionScope.ts │ │ │ ├── Field.ts │ │ │ ├── FormConsumer.ts │ │ │ ├── FormProvider.ts │ │ │ ├── index.ts │ │ │ ├── ObjectField.ts │ │ │ ├── ReactiveField.ts │ │ │ ├── RecursionField.ts │ │ │ ├── SchemaField.ts │ │ │ └── VoidField.ts │ │ ├── global.d.ts │ │ ├── hooks │ │ │ ├── index.ts │ │ │ ├── useAttach.ts │ │ │ ├── useField.ts │ │ │ ├── useFieldSchema.ts │ │ │ ├── useForm.ts │ │ │ ├── useFormEffects.ts │ │ │ ├── useInjectionCleaner.ts │ │ │ └── useParentForm.ts │ │ ├── index.ts │ │ ├── shared │ │ │ ├── connect.ts │ │ │ ├── context.ts │ │ │ ├── createForm.ts │ │ │ ├── fragment.ts │ │ │ ├── h.ts │ │ │ └── index.ts │ │ ├── types │ │ │ └── index.ts │ │ ├── utils │ │ │ ├── formatVNodeData.ts │ │ │ ├── getFieldProps.ts │ │ │ ├── getRawComponent.ts │ │ │ └── resolveSchemaProps.ts │ │ └── vue2-components.ts │ ├── tsconfig.build.json │ ├── tsconfig.json │ └── tsconfig.types.json ├── README.md ├── README.zh-cn.md ├── scripts │ ├── build-style │ │ ├── buildAllStyles.ts │ │ ├── copy.ts │ │ ├── helper.ts │ │ └── index.ts │ └── rollup.base.js ├── tsconfig.build.json ├── tsconfig.jest.json ├── tsconfig.json └── yarn.lock ``` # Files -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- ``` registry "https://registry.yarnpkg.com" ``` -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- ```javascript module.exports = { semi: false, tabWidth: 2, singleQuote: true, } ``` -------------------------------------------------------------------------------- /devtools/chrome-extension/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/antd/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/benchmark/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/core/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/grid/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/json-schema/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/next/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/path/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/react/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/reactive-react/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/reactive-vue/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/reactive/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/shared/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/validator/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/element/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js vue.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /packages/vue/.npmignore: -------------------------------------------------------------------------------- ``` node_modules *.log build docs doc-site __tests__ .eslintrc jest.config.js vue.config.js tsconfig.json .umi src ``` -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- ``` node_modules lib dist build coverage expected website gh-pages weex build.ts packages/vue packages/element esm doc-site public package ``` -------------------------------------------------------------------------------- /.codecov.yml: -------------------------------------------------------------------------------- ```yaml coverage: status: project: default: threshold: 0.1% patch: default: threshold: 0.1% target: 95% ``` -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- ``` # EditorConfig is awesome: http://EditorConfig.org # top-most EditorConfig file root = true # Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 [*.gradle] indent_size = 4 ``` -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- ``` *~ *.swp .DS_Store .tea npm-debug.log lerna-debug.log npm-debug.log* package-lock.json lib/ esm/ temp_esm/ dist/ type-artefacts/ build/ coverage/ node_modules/ examples/test .idea/ TODO.md tsconfig.tsbuildinfo package/ package.zip .umi .umi-production .cjsescache doc-site .lerna-changelog .history .lint-report.log ``` -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- ``` { "env": { "node": true }, "extends": [ "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "prettier/@typescript-eslint" ], "globals": { "sleep": true, "prettyFormat": true }, "parserOptions": { "ecmaVersion": 10, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint", "react", "prettier", "markdown"], "settings": { "react": { "version": "detect" } }, "rules": { "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unused-vars": "error", "@typescript-eslint/ban-ts-comment": "off", "react/no-unescaped-entities": "off", "react/prop-types": "off" }, "overrides": [ { "files": ["**/*.md"], "processor": "markdown/markdown" }, { "files": ["**/*.md/*.{jsx,tsx}"], "rules": { "@typescript-eslint/no-unused-vars": "error", "no-unused-vars": "error", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } }, { "files": ["**/*.md/*.{js,ts}"], "rules": { "@typescript-eslint/no-unused-vars": "off", "no-unused-vars": "off", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } } ] } ``` -------------------------------------------------------------------------------- /packages/benchmark/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Formily', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'API', path: '/api', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: 'API', path: '/zh-CN/api', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, links: [ { rel: 'stylesheet', href: 'https://esm.sh/[email protected]/dist/antd.css', }, ], styles: [ `.__dumi-default-navbar-logo{ height: 60px !important; width: 150px !important; padding-left:0 !important; color: transparent !important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; } nav a{ text-decoration: none !important; } `, ], menus: { '/guide': [ { title: 'Introduction', path: '/guide', }, { title: 'Architecture', path: '/guide/architecture' }, { title: 'Concept', path: '/guide/concept' }, ], '/zh-CN/guide': [ { title: '介绍', path: '/guide', }, { title: '核心架构', path: '/zh-CN/guide/architecture' }, { title: '核心概念', path: '/zh-CN/guide/concept' }, ], }, } ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Formily', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'API', path: '/api', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: 'API', path: '/zh-CN/api', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, links: [ { rel: 'stylesheet', href: 'https://esm.sh/[email protected]/dist/antd.css', }, ], styles: [ `.__dumi-default-navbar-logo{ height: 60px !important; width: 150px !important; padding-left:0 !important; color: transparent !important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; } nav a{ text-decoration: none !important; } `, ], menus: { '/guide': [ { title: 'Introduction', path: '/guide', }, { title: 'Architecture', path: '/guide/architecture' }, { title: 'Concept', path: '/guide/concept' }, ], '/zh-CN/guide': [ { title: '介绍', path: '/guide', }, { title: '核心架构', path: '/zh-CN/guide/architecture' }, { title: '核心概念', path: '/zh-CN/guide/concept' }, ], }, } ``` -------------------------------------------------------------------------------- /.all-contributorsrc: -------------------------------------------------------------------------------- ``` { "projectName": "formily", "projectOwner": "alibaba", "repoType": "github", "repoHost": "https://github.com", "files": [ "README.md" ], "imageSize": 100, "commit": false, "contributors": [ { "login": "janryWang", "name": "Janry", "avatar_url": "https://avatars0.githubusercontent.com/u/4060976?v=4", "profile": "https://github.com/janryWang", "contributions": [ "design" ] }, { "login": "cnt1992", "name": "SkyCai", "avatar_url": "https://avatars1.githubusercontent.com/u/3118988?v=4", "profile": "http://cnt1992.github.io", "contributions": [ "design" ] }, { "login": "yujiangshui", "name": "Harry Yu", "avatar_url": "https://avatars3.githubusercontent.com/u/2942913?v=4", "profile": "https://www.linkedin.com/in/harry-yu-0a931a69/", "contributions": [ "doc", "code" ] }, { "login": "zsirfs", "name": "zsir", "avatar_url": "https://avatars2.githubusercontent.com/u/22249411?v=4", "profile": "https://www.luoyangfu.com", "contributions": [ "code" ] }, { "login": "monkindey", "name": "Kiho · Cham", "avatar_url": "https://avatars0.githubusercontent.com/u/6913898?v=4", "profile": "http://www.monkindey.xyz/", "contributions": [ "code", "doc" ] }, { "login": "whj1995", "name": "Hongjiang Wu", "avatar_url": "https://avatars2.githubusercontent.com/u/22634735?v=4", "profile": "http://whj1995.xyz", "contributions": [ "doc" ] }, { "login": "anyuxuan", "name": "合木", "avatar_url": "https://avatars3.githubusercontent.com/u/24931869?v=4", "profile": "https://github.com/anyuxuan", "contributions": [ "code" ] }, { "login": "Azath0th", "name": "Chen YuBen", "avatar_url": "https://avatars2.githubusercontent.com/u/18497361?v=4", "profile": "https://github.com/Azath0th", "contributions": [ "code" ] }, { "login": "HarrisFeng", "name": "Harris Feng", "avatar_url": "https://avatars1.githubusercontent.com/u/7928957?v=4", "profile": "https://github.com/HarrisFeng", "contributions": [ "code" ] } ], "contributorsPerLine": 7 } ``` -------------------------------------------------------------------------------- /devtools/.eslintrc: -------------------------------------------------------------------------------- ``` { "parser": "@typescript-eslint/parser", "extends": [ "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "prettier/@typescript-eslint" ], "env": { "node": true }, "plugins": ["@typescript-eslint", "react", "prettier", "markdown"], "parserOptions": { "sourceType": "module", "ecmaVersion": 10, "ecmaFeatures": { "jsx": true } }, "settings": { "react": { "version": "detect" } }, "rules": { "prettier/prettier": 0, // don't force es6 functions to include space before paren "space-before-function-paren": 0, "react/prop-types": 0, "react/no-find-dom-node": 0, "react/display-name": 0, // allow specifying true explicitly for boolean props "react/jsx-boolean-value": 0, "react/no-did-update-set-state": 0, // maybe we should no-public "@typescript-eslint/explicit-member-accessibility": 0, "@typescript-eslint/interface-name-prefix": 0, "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/no-parameter-properties": 0, "@typescript-eslint/array-type": 0, "@typescript-eslint/no-object-literal-type-assertion": 0, "@typescript-eslint/no-use-before-define": 0, "@typescript-eslint/no-unused-vars": 1, "@typescript-eslint/no-namespace": 0, "@typescript-eslint/ban-types": 0, "@typescript-eslint/adjacent-overload-signatures": 0, "@typescript-eslint/explicit-module-boundary-types": 0, "@typescript-eslint/triple-slash-reference": 0, "@typescript-eslint/no-empty-function": 0, "no-console": [ "error", { "allow": ["warn", "error", "info"] } ], "prefer-const": 0, "no-var": 1, "prefer-rest-params": 0 }, "overrides": [ { "files": ["**/*.md.{jsx,tsx}"], "processor": "markdown/markdown" }, { "files": ["**/*.md/*.{jsx,tsx}"], "rules": { "@typescript-eslint/no-unused-vars": "error", "no-unused-vars": "error", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } }, { "files": ["**/*.md/*.{js,ts}"], "rules": { "@typescript-eslint/no-unused-vars": "off", "no-unused-vars": "off", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } } ] } ``` -------------------------------------------------------------------------------- /packages/.eslintrc: -------------------------------------------------------------------------------- ``` { "parser": "@typescript-eslint/parser", "extends": [ "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "prettier/@typescript-eslint" ], "env": { "node": true }, "plugins": ["@typescript-eslint", "react", "prettier", "markdown"], "parserOptions": { "sourceType": "module", "ecmaVersion": 10, "ecmaFeatures": { "jsx": true } }, "settings": { "react": { "version": "detect" } }, "rules": { "prettier/prettier": 0, // don't force es6 functions to include space before paren "space-before-function-paren": 0, "react/prop-types": 0, "react/no-find-dom-node": 0, "react/display-name": 0, // allow specifying true explicitly for boolean props "react/jsx-boolean-value": 0, "react/no-did-update-set-state": 0, "react/no-unescaped-entities": "off", // maybe we should no-public "@typescript-eslint/explicit-member-accessibility": 0, "@typescript-eslint/interface-name-prefix": 0, "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/no-parameter-properties": 0, "@typescript-eslint/array-type": 0, "@typescript-eslint/no-object-literal-type-assertion": 0, "@typescript-eslint/no-use-before-define": 0, "@typescript-eslint/no-unused-vars": 1, "@typescript-eslint/no-namespace": 0, "@typescript-eslint/ban-ts-comment": 0, "@typescript-eslint/ban-types": 0, "@typescript-eslint/adjacent-overload-signatures": 0, "@typescript-eslint/explicit-module-boundary-types": 0, "@typescript-eslint/triple-slash-reference": 0, "@typescript-eslint/no-empty-function": 0, "no-console": [ "error", { "allow": ["warn", "error", "info"] } ], "prefer-const": 0, "no-var": 1, "prefer-rest-params": 0 }, "overrides": [ { "files": ["**/*.md.{jsx,tsx}"], "processor": "markdown/markdown" }, { "files": ["**/*.md/*.{jsx,tsx}"], "rules": { "@typescript-eslint/no-unused-vars": "error", "no-unused-vars": "error", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } }, { "files": ["**/*.md/*.{js,ts}"], "rules": { "@typescript-eslint/no-unused-vars": "off", "no-unused-vars": "off", "no-console": "off", "react/display-name": "off", "react/prop-types": "off" } } ] } ``` -------------------------------------------------------------------------------- /packages/reactive-react/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'doc', logo: 'https://img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Formily', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ background-size: 140px!important; background-position: center left!important; background-repeat: no-repeat!important; padding-left: 150px!important;/*可根据title的宽度调整*/ font-size: 22px!important; color: #000!important; font-weight: lighter!important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], } ``` -------------------------------------------------------------------------------- /packages/antd/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Ant Design', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', locales: [ ['en-US', 'English'], ['zh-CN', '中文'], ], navs: { 'zh-CN': [ { title: 'Ant Design', path: '/zh-CN/components', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'en-US': [ { title: 'Ant Design', path: '/components', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, links: [ { rel: 'stylesheet', href: 'https://esm.sh/[email protected]/dist/antd.css', }, ], headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ height: 60px !important; width: 150px !important; padding-left:0 !important; color: transparent !important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], } ``` -------------------------------------------------------------------------------- /packages/next/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Fusion', favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', hash: true, outputPath: './doc-site', navs: { 'en-US': [ { title: 'Alibaba Fusion', path: '/components', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: 'Alibaba Fusion', path: '/zh-CN/components', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, links: [ { rel: 'stylesheet', href: 'https://esm.sh/@alifd/next/dist/next-noreset.css', }, ], headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ background-size: 140px!important; background-position: center left!important; background-repeat: no-repeat!important; padding-left: 150px!important;/*可根据title的宽度调整*/ font-size: 22px!important; color: #000!important; font-weight: lighter!important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], } ``` -------------------------------------------------------------------------------- /packages/react/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'React', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'API', path: '/api', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: 'API', path: '/zh-CN/api', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, links: [ { rel: 'stylesheet', href: 'https://esm.sh/[email protected]/dist/antd.css', }, ], headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ background-size: 140px!important; background-position: center left!important; background-repeat: no-repeat!important; padding-left: 150px!important;/*可根据title的宽度调整*/ font-size: 22px!important; color: #000!important; font-weight: lighter!important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], menus: { '/guide': [ { title: 'Introduction', path: '/guide', }, { title: 'Architecture', path: '/guide/architecture' }, { title: 'Concept', path: '/guide/concept' }, ], '/zh-CN/guide': [ { title: '介绍', path: '/guide', }, { title: '核心架构', path: '/zh-CN/guide/architecture' }, { title: '核心概念', path: '/zh-CN/guide/concept' }, ], }, } ``` -------------------------------------------------------------------------------- /packages/core/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: 'https://img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Core', hash: true, favicon: 'https://img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'API', path: '/api', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: 'API', path: '/zh-CN/api', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ background-size: 140px!important; background-position: center left!important; background-repeat: no-repeat!important; padding-left: 150px!important;/*可根据title的宽度调整*/ font-size: 22px!important; color: #000!important; font-weight: lighter!important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], menus: { '/guide': [ { title: 'Introduction', children: [ { title: 'Introduction', path: '/guide', }, { title: 'Architecture', path: '/guide/architecture' }, ], }, { title: 'Concept', children: [ { title: 'MVVM', path: '/guide/mvvm', }, { title: 'Form Model', path: '/guide/form', }, { title: 'Field Model', path: '/guide/field', }, ], }, ], '/zh-CN/guide': [ { title: '概览', children: [ { title: '介绍', path: '/zh-CN/guide', }, { title: '核心架构', path: '/zh-CN/guide/architecture' }, ], }, { title: '概念', children: [ { title: 'MVVM', path: '/zh-CN/guide/mvvm', }, { title: '表单模型', path: '/zh-CN/guide/form', }, { title: '字段模型', path: '/zh-CN/guide/field', }, ], }, ], }, } ``` -------------------------------------------------------------------------------- /packages/reactive/.umirc.js: -------------------------------------------------------------------------------- ```javascript import { resolve } from 'path' export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Reactive', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'API', path: '/api', }, { title: 'Home Site', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: 'API', path: '/zh-CN/api', }, { title: '主站', path: 'https://formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], styles: [ `.__dumi-default-navbar-logo{ background-size: 140px!important; background-position: center left!important; background-repeat: no-repeat!important; padding-left: 150px!important;/*可根据title的宽度调整*/ font-size: 22px!important; color: #000!important; font-weight: lighter!important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], menus: { '/guide': [ { title: 'Introduction', path: '/guide', }, { title: 'Concept', path: '/guide/concept' }, { title: 'Best Practice', path: '/guide/best-practice', }, ], '/api': [ { title: '@formily/reactive', children: [ { title: 'observable', path: '/api/observable', }, { title: 'autorun', path: '/api/autorun', }, { title: 'reaction', path: '/api/reaction', }, { title: 'batch', path: '/api/batch', }, { title: 'action', path: '/api/action', }, { title: 'define', path: '/api/define', }, { title: 'model', path: '/api/model', }, { title: 'observe', path: '/api/observe', }, { title: 'markRaw', path: '/api/mark-raw', }, { title: 'markObservable', path: '/api/mark-observable', }, { title: 'raw', path: '/api/raw', }, { title: 'toJS', path: '/api/to-js', }, { title: 'untracked', path: '/api/untracked', }, { title: 'hasCollected', path: '/api/has-collected', }, { title: 'Tracker', path: '/api/tracker', }, { title: 'Type Chekcer', path: '/api/type-checker', }, ], }, { title: '@formily/reactive-react', children: [ { title: 'observer', path: '/api/react/observer', }, ], }, { title: '@formily/reactive-vue', children: [ { title: 'observer', path: '/api/vue/observer', }, ], }, ], '/zh-CN/guide': [ { title: '介绍', path: '/zh-CN/guide', }, { title: '核心概念', path: '/zh-CN/guide/concept' }, { title: '最佳实践', path: '/zh-CN/guide/best-practice', }, ], '/zh-CN/api': [ { title: '@formily/reactive', children: [ { title: 'observable', path: '/zh-CN/api/observable', }, { title: 'autorun', path: '/zh-CN/api/autorun', }, { title: 'reaction', path: '/zh-CN/api/reaction', }, { title: 'batch', path: '/zh-CN/api/batch', }, { title: 'action', path: '/zh-CN/api/action', }, { title: 'define', path: '/zh-CN/api/define', }, { title: 'model', path: '/zh-CN/api/model', }, { title: 'observe', path: '/zh-CN/api/observe', }, { title: 'markRaw', path: '/zh-CN/api/mark-raw', }, { title: 'markObservable', path: '/zh-CN/api/mark-observable', }, { title: 'raw', path: '/zh-CN/api/raw', }, { title: 'toJS', path: '/zh-CN/api/to-js', }, { title: 'untracked', path: '/zh-CN/api/untracked', }, { title: 'hasCollected', path: '/zh-CN/api/has-collected', }, { title: 'Tracker', path: '/zh-CN/api/tracker', }, { title: 'Type Chekcer', path: '/zh-CN/api/type-checker', }, ], }, { title: '@formily/reactive-react', children: [ { title: 'observer', path: '/zh-CN/api/react/observer', }, ], }, { title: '@formily/reactive-vue', children: [ { title: 'observer', path: '/zh-CN/api/vue/observer', }, ], }, ], }, } ``` -------------------------------------------------------------------------------- /.umirc.js: -------------------------------------------------------------------------------- ```javascript export default { mode: 'site', logo: '//img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg', title: 'Formily', hash: true, favicon: '//img.alicdn.com/imgextra/i3/O1CN01XtT3Tv1Wd1b5hNVKy_!!6000000002810-55-tps-360-360.svg', outputPath: './doc-site', locales: [ ['en-US', 'English'], ['zh-CN', '中文'], ], navs: { 'en-US': [ { title: 'Guide', path: '/guide', }, { title: 'Basic Core Library', children: [ { title: '@formily/reactive', path: 'https://reactive.formilyjs.org', }, { title: '@formily/core', path: 'https://core.formilyjs.org', }, { title: '@formily/react', path: 'https://react.formilyjs.org', }, { title: '@formily/vue', path: 'https://vue.formilyjs.org', }, ], }, { title: 'Component Ecology', children: [ { title: '@formily/antd', path: 'https://antd.formilyjs.org', }, { title: '@formily/antd-v5', path: 'https://antd5.formilyjs.org', }, { title: '@formily/antd-mobile', path: 'https://antd-mobile.formilyjs.org', }, { title: '@formily/next', path: 'https://fusion.formilyjs.org', }, { title: '@formily/element', path: 'https://element.formilyjs.org', }, { title: '@formily/element-plus', path: 'https://element-plus.formilyjs.org', }, { title: '@formily/antdv', path: 'https://antdv.formilyjs.org', }, { title: '@formily/antdv-x3', path: 'https://antdv-x3.formilyjs.org', }, { title: '@formily/vant', path: 'https://vant.formilyjs.org', }, { title: '@formily/semi', path: 'https://semi.formilyjs.org', }, { title: '@formily/tdesign-react', path: 'https://tdesign-react.formilyjs.org/', }, { title: 'aliyun teamix', path: 'https://formily.dg.aliyun-inc.com/', }, { title: 'antd-formily-boost', path: 'https://github.com/fishedee/antd-formily-boost', }, ], }, { title: 'Tools', children: [ { title: 'Formily Designer', path: 'https://designable-antd.formilyjs.org/', }, { title: 'Designable', path: 'https://github.com/alibaba/designable', }, { title: 'Chrome Extension', path: 'https://chrome.google.com/webstore/detail/formily-devtools/kkocalmbfnplecdmbadaapgapdioecfm?hl=zh-CN', }, ], }, { title: 'Community', children: [ { title: 'Forum', path: 'https://github.com/alibaba/formily/discussions', }, { title: 'Zhihu', path: 'https://www.zhihu.com/column/uform' }, ], }, { title: '[email protected]', path: 'https://v1.formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], 'zh-CN': [ { title: '指南', path: '/zh-CN/guide', }, { title: '基础核心库', children: [ { title: '@formily/reactive', path: 'https://reactive.formilyjs.org/zh-CN', }, { title: '@formily/core', path: 'https://core.formilyjs.org/zh-CN', }, { title: '@formily/react', path: 'https://react.formilyjs.org/zh-CN', }, { title: '@formily/vue', path: 'https://vue.formilyjs.org', }, ], }, { title: '组件生态', children: [ { title: '@formily/antd', path: 'https://antd.formilyjs.org/zh-CN', }, { title: '@formily/antd-v5', path: 'https://antd5.formilyjs.org/zh-CN', }, { title: '@formily/antd-mobile', path: 'https://antd-mobile.formilyjs.org/zh-CN', }, { title: '@formily/next', path: 'https://fusion.formilyjs.org/zh-CN', }, { title: '@formily/element', path: 'https://element.formilyjs.org', }, { title: '@formily/element-plus', path: 'https://element-plus.formilyjs.org', }, { title: '@formily/antdv', path: 'https://antdv.formilyjs.org', }, { title: '@formily/vant', path: 'https://vant.formilyjs.org', }, { title: '@formily/semi', path: 'https://semi.formilyjs.org', }, { title: '@formily/tdesign-react', path: 'https://tdesign-react.formilyjs.org', }, { title: 'aliyun teamix', path: 'https://formily.dg.aliyun-inc.com', }, { title: 'antd-formily-boost', path: 'https://github.com/fishedee/antd-formily-boost', }, ], }, { title: '工具', children: [ { title: 'Formily 设计器', path: 'https://designable-antd.formilyjs.org/', }, { title: '通用搭建引擎', path: 'https://github.com/alibaba/designable', }, { title: 'Chrome扩展', path: 'https://chrome.google.com/webstore/detail/formily-devtools/kkocalmbfnplecdmbadaapgapdioecfm?hl=zh-CN', }, ], }, { title: '社区', children: [ { title: '论坛', path: 'https://github.com/alibaba/formily/discussions', }, { title: '知乎专栏', path: 'https://www.zhihu.com/column/uform' }, ], }, { title: '1.x文档', path: 'https://v1.formilyjs.org', }, { title: 'GITHUB', path: 'https://github.com/alibaba/formily', }, ], }, headScripts: [ ` function loadAd(){ var header = document.querySelector('.__dumi-default-layout-content .markdown h1') if(header && !header.querySelector('#_carbonads_js')){ var script = document.createElement('script') script.src = '//cdn.carbonads.com/carbon.js?serve=CEAICK3M&placement=formilyjsorg' script.id = '_carbonads_js' script.classList.add('head-ad') header.appendChild(script) } } var request = null var observer = new MutationObserver(function(){ cancelIdleCallback(request) request = requestIdleCallback(loadAd) }) document.addEventListener('DOMContentLoaded',function(){ loadAd() observer.observe( document.body, { childList:true, subtree:true } ) }) `, ], links: [ { rel: 'stylesheet', href: 'https://esm.sh/[email protected]/dist/antd.css', }, ], styles: [ `.__dumi-default-navbar-logo{ height: 60px !important; width: 150px !important; padding-left:0 !important; color: transparent !important; } .__dumi-default-navbar{ padding: 0 28px !important; } .__dumi-default-layout-hero{ background-image: url(//img.alicdn.com/imgextra/i4/O1CN01ZcvS4e26XMsdsCkf9_!!6000000007671-2-tps-6001-4001.png); background-size: cover; background-repeat: no-repeat; padding: 120px 0 !important; } .__dumi-default-layout-hero h1{ color:#45124e !important; font-size:80px !important; padding-bottom: 30px !important; } .__dumi-default-dark-switch { display:none } nav a{ text-decoration: none !important; } #carbonads * { margin: initial; padding: initial; } #carbonads { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif; } #carbonads { display: flex; max-width: 330px; background-color: hsl(0, 0%, 98%); box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.1); z-index: 100; float:right; } #carbonads a { color: inherit; text-decoration: none; } #carbonads a:hover { color: inherit; } #carbonads span { position: relative; display: block; overflow: hidden; } #carbonads .carbon-wrap { display: flex; } #carbonads .carbon-img { display: block; margin: 0; line-height: 1; } #carbonads .carbon-img img { display: block; } #carbonads .carbon-text { font-size: 13px; padding: 10px; margin-bottom: 16px; line-height: 1.5; text-align: left; } #carbonads .carbon-poweredby { display: block; padding: 6px 8px; background: #f1f1f2; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; font-size: 8px; line-height: 1; border-top-left-radius: 3px; position: absolute; bottom: 0; right: 0; } `, ], menus: { '/guide': [ { title: 'Introduction', path: '/guide', }, { title: 'How to learn Formily', path: '/guide/learn-formily', }, { title: 'Quick start', path: '/guide/quick-start', }, { title: 'V2 Upgrade Guide', path: '/guide/upgrade', }, { title: 'Contribution Guide', path: '/guide/contribution', }, { title: 'Form Builder Guide', path: '/guide/form-builder', }, { title: 'Issue Helper', path: '/guide/issue-helper', }, { title: 'Scenes', children: [ { title: 'Login&Signup', path: '/guide/scenes/login-register', }, { title: 'Query List', path: '/guide/scenes/query-list', }, { title: 'Edit&Details', path: '/guide/scenes/edit-detail', }, { title: 'Dialog&Drawer', path: '/guide/scenes/dialog-drawer', }, { title: 'Step Form', path: '/guide/scenes/step-form', }, { title: 'Tab Form', path: '/guide/scenes/tab-form', }, { title: 'More Scenes', path: '/guide/scenes/more', }, ], }, { title: 'Advanced Guide', children: [ { title: 'Form Validation', path: '/guide/advanced/validate', }, { title: 'Form Layout', path: '/guide/advanced/layout', }, { title: 'Asynchronous Data Sources', path: '/guide/advanced/async', }, { title: 'Form Controlled', path: '/guide/advanced/controlled', }, { title: 'Linkage Logic', path: '/guide/advanced/linkages', }, { title: 'Calculator', path: '/guide/advanced/calculator', }, { title: 'Custom Components', path: '/guide/advanced/custom', }, { title: 'Front-end and back-end data compatibility solution', path: '/guide/advanced/destructor', }, { title: 'Manage Business Logic', path: '/guide/advanced/business-logic', }, { title: 'Pack on demand', path: '/guide/advanced/build', }, ], }, ], '/zh-CN/guide': [ { title: '介绍', path: '/zh-CN/guide', }, { title: '如何学习Formily', path: '/zh-CN/guide/learn-formily', }, { title: '快速开始', path: '/zh-CN/guide/quick-start', }, { title: 'V2升级指南', path: '/zh-CN/guide/upgrade', }, { title: '贡献指南', path: '/zh-CN/guide/contribution', }, { title: '表单设计器开发指南', path: '/zh-CN/guide/form-builder', }, { title: '问题反馈', path: '/zh-CN/guide/issue-helper', }, { title: '场景案例', children: [ { title: '登录注册', path: '/zh-CN/guide/scenes/login-register', }, { title: '查询列表', path: '/zh-CN/guide/scenes/query-list', }, { title: '编辑详情', path: '/zh-CN/guide/scenes/edit-detail', }, { title: '弹窗与抽屉', path: '/zh-CN/guide/scenes/dialog-drawer', }, { title: '分步表单', path: '/zh-CN/guide/scenes/step-form', }, { title: '选项卡/手风琴表单', path: '/zh-CN/guide/scenes/tab-form', }, { title: '更多场景', path: '/zh-CN/guide/scenes/more', }, ], }, { title: '进阶指南', children: [ { title: '实现表单校验', path: '/zh-CN/guide/advanced/validate', }, { title: '实现表单布局', path: '/zh-CN/guide/advanced/layout', }, { title: '实现异步数据源', path: '/zh-CN/guide/advanced/async', }, { title: '实现表单受控', path: '/zh-CN/guide/advanced/controlled', }, { title: '实现联动逻辑', path: '/zh-CN/guide/advanced/linkages', }, { title: '实现联动计算器', path: '/zh-CN/guide/advanced/calculator', }, { title: '实现自定义组件', path: '/zh-CN/guide/advanced/custom', }, { title: '前后端数据差异兼容方案', path: '/zh-CN/guide/advanced/destructor', }, { title: '管理业务逻辑', path: '/zh-CN/guide/advanced/business-logic', }, { title: '按需打包', path: '/zh-CN/guide/advanced/build', }, ], }, ], }, } ``` -------------------------------------------------------------------------------- /packages/core/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/core ``` -------------------------------------------------------------------------------- /packages/grid/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/grid ``` -------------------------------------------------------------------------------- /packages/react/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/react ``` -------------------------------------------------------------------------------- /packages/benchmark/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/benchmark ``` -------------------------------------------------------------------------------- /packages/json-schema/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/json-schema ``` -------------------------------------------------------------------------------- /packages/reactive-vue/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/reactive-vue ``` -------------------------------------------------------------------------------- /packages/path/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/path > Path System ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/reactive-test-cases-for-react18 ``` -------------------------------------------------------------------------------- /packages/reactive/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/reactive > Web Reactive Library Like Mobx ## QuikStart ``` -------------------------------------------------------------------------------- /packages/antd/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/antd ### Install ```bash npm install --save @formily/antd ``` ``` -------------------------------------------------------------------------------- /packages/next/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/next ### Install ```bash npm install --save @formily/next ``` ``` -------------------------------------------------------------------------------- /packages/vue/README.md: -------------------------------------------------------------------------------- ```markdown ## Usage ### Requirement vue^2.6.0 + @vue/composition-api^1.0.0-beta.1 Or vue>=3.0.0-rc.0 ``` -------------------------------------------------------------------------------- /packages/element/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/element ### Requirement vue^2.6.0 + @vue/composition-api^1.0.0-beta.1 ### Install ```bash npm install --save @formily/element ``` ``` -------------------------------------------------------------------------------- /packages/reactive-react/README.md: -------------------------------------------------------------------------------- ```markdown # @formily/reactive-react ## QuikStart ```tsx import React from 'react' import { observable } from '@formily/reactive' import { observer } from '@formily/reactive-react' const obs = observable({ count: 0, }) export default observer(() => { return ( <div> {obs.count} <button onClick={() => { obs.count++ }} > Click </button> </div> ) }) ``` ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- ```markdown English | [简体中文](./README.zh-cn.md) <p align="center"> <img src="https://img.alicdn.com/tfs/TB1fHhZu4D1gK0jSZFyXXciOVXa-2500-1200.png"> <img src="https://img.shields.io/npm/dt/@formily/core"/> <img src="https://img.shields.io/npm/dm/@formily/core"/> <a href="https://www.npmjs.com/package/@formily/core"><img src="https://img.shields.io/npm/v/@formily/core.svg"></a> <a href="https://codecov.io/gh/alibaba/formily"> <img src="https://codecov.io/gh/alibaba/formily/branch/formily_next/graph/badge.svg?token=3V9RU8Wh9d"/> </a> <img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg"/> <a href="https://github.com/actions-cool/issues-helper"> <img src="https://img.shields.io/badge/using-issues--helper-blueviolet"/> </a> <a href="https://app.netlify.com/sites/formily/deploys"><img src="https://api.netlify.com/api/v1/badges/7145918b-9cb5-47f8-8a42-111969e232ef/deploy-status"/></a> </p> --- ## Background In React, the whole tree rendering performance problem of the form is very obvious in the controlled mode. Especially for the scene of data linkage, it is easy to cause the page to be stuck. To solve this problem, we have distributed the management of the state of each form field, which significantly improves the performance of the form operations. At the same time, we deeply integrate the JSON Schema protocol to help you solve the problem of back-end driven form rendering quickly. ## Features - 🖼 Designable, You can quickly develop forms at low cost through [Form Builder](https://designable-antd.formilyjs.org/). - 🚀 High performance, fields managed independently, rather rerender the whole tree. - 💡 Integrated Alibaba Fusion and Ant Design components are guaranteed to work out of the box. - 🎨 JSON Schema applied for BackEnd. JSchema applied for FrontEnd. Two paradigms can be converted to each other. - 🏅 Side effects are managed independently, making form data linkages easier than ever before. - 🌯 Override most complicated form layout use cases. ## Form Builder  ## WebSite 2.0 https://formilyjs.org 1.0 https://v1.formilyjs.org ## Community - [formilyjs](https://github.com/formilyjs) - [designable](https://github.com/alibaba/designable) - [icejs](https://github.com/alibaba/ice) ## How to contribute? - [Contribute document](https://formilyjs.org/zh-CN/guide/contribution) ## Contributors This project exists thanks to all the people who contribute. <a href="https://github.com/alibaba/formily/graphs/contributors"><img src="https://contrib.rocks/image?repo=alibaba/formily" /></a> ## LICENSE Formily is open source software licensed as [MIT](https://github.com/alibaba/formily/blob/master/LICENSE.md). ``` -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/antd/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/core/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/react/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/shared/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/validator/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /devtools/chrome-extension/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/benchmark/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/grid/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/json-schema/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/path/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/reactive-react/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/reactive-vue/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /packages/reactive/LICENSE.md: -------------------------------------------------------------------------------- ```markdown The MIT License (MIT) Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- ```markdown # Contributing Guide Hi! I’m really excited that you are interested in contributing to Formily. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines. - [Contributing Guide](#contributing-guide) - [Issue Reporting Guidelines](#issue-reporting-guidelines) - [Pull Request Guidelines](#pull-request-guidelines) - [Git Commit Specific](#git-commit-specific) ## Issue Reporting Guidelines - The issue list of this repo is **exclusively** for bug reports and feature requests. Non-conforming issues will be closed immediately. - For simple beginner questions, you can get quick answers from - For more complicated questions, you can use Google or StackOverflow. Make sure to provide enough information when asking your questions - this makes it easier for others to help you! - Try to search for your issue, it may have already been answered or even fixed in the development branch. - Check if the issue is reproducible with the latest stable version of Formily. If you are using a pre-release, please indicate the specific version you are using. - It is **required** that you clearly describe the steps necessary to reproduce the issue you are running into. Issues with no clear repro steps will not be triaged. If an issue labeled "need repro" receives no further input from the issue author for more than 5 days, it will be closed. - For bugs that involves build setups, you can create a reproduction repository with steps in the README. - If your issue is resolved but still open, don’t hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it. ## Pull Request Guidelines - Only code that's ready for release should be committed to the master branch. All development should be done in dedicated branches. - Checkout a **new** topic branch from master branch, and merge back against master branch. - Work in the `src` folder and **DO NOT** checkin `dist` in the commits. - Make sure `npm test` passes. - If adding new feature: - Add accompanying test case. - Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it. - If fixing a bug: - If you are resolving a special issue, add `(fix #xxxx[,#xxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `update entities encoding/decoding (fix #3899)`. - Provide detailed description of the bug in the PR. Live demo preferred. - Add appropriate test coverage if applicable. ## Git Commit Specific - Your commits message must follow our [git commit specific](https://github.com/alibaba/formily/blob/master/.github/GIT_COMMIT_SPECIFIC.md). - We will check your commit message, if it does not conform to the specification, the commit will be automatically refused, make sure you have read the specification above. - You could use `git cz` with a CLI interface to replace `git commit` command, it will help you to build a proper commit-message, see [commitizen](https://github.com/commitizen/cz-cli). - It's OK to have multiple small commits as you work on your branch - we will let GitHub automatically squash it before merging. ``` -------------------------------------------------------------------------------- /packages/antd/src/form-layout/style.less: -------------------------------------------------------------------------------- ``` ``` -------------------------------------------------------------------------------- /packages/antd/src/form/style.less: -------------------------------------------------------------------------------- ``` ``` -------------------------------------------------------------------------------- /packages/element/src/form-button-group/style.scss: -------------------------------------------------------------------------------- ```scss ``` -------------------------------------------------------------------------------- /packages/element/src/form/style.scss: -------------------------------------------------------------------------------- ```scss ``` -------------------------------------------------------------------------------- /packages/next/src/form-layout/main.scss: -------------------------------------------------------------------------------- ```scss ``` -------------------------------------------------------------------------------- /packages/next/src/form/main.scss: -------------------------------------------------------------------------------- ```scss ``` -------------------------------------------------------------------------------- /packages/core/docs/guide/values.md: -------------------------------------------------------------------------------- ```markdown # Data Model ``` -------------------------------------------------------------------------------- /packages/antd/src/form-layout/style.ts: -------------------------------------------------------------------------------- ```typescript // @ts-ignore ``` -------------------------------------------------------------------------------- /packages/antd/src/form/style.ts: -------------------------------------------------------------------------------- ```typescript // @ts-ignore ``` -------------------------------------------------------------------------------- /packages/next/src/form-layout/style.ts: -------------------------------------------------------------------------------- ```typescript // @ts-ignore ``` -------------------------------------------------------------------------------- /packages/next/src/form/style.ts: -------------------------------------------------------------------------------- ```typescript // @ts-ignore ``` -------------------------------------------------------------------------------- /packages/next/src/form-grid/style.ts: -------------------------------------------------------------------------------- ```typescript import './main.scss' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-grid/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/form-grid/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/form-layout/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/space/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' ``` -------------------------------------------------------------------------------- /packages/reactive-vue/src/hooks/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './useObserver' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-dialog/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/modal/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-step/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/steps/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/input/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/input/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/password/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/input/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/space/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/space/style/index' ``` -------------------------------------------------------------------------------- /packages/json-schema/src/polyfills/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './SPECIFICATION_1_0' ``` -------------------------------------------------------------------------------- /packages/next/src/form-step/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/step/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-drawer/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/drawer/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/reset/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/button/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/select/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/select/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/submit/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/button/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/switch/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/switch/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/upload/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/upload/style/index' ``` -------------------------------------------------------------------------------- /packages/next/src/input/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/input/style' ``` -------------------------------------------------------------------------------- /packages/next/src/password/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/input/style' ``` -------------------------------------------------------------------------------- /packages/next/src/radio/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/radio/style' ``` -------------------------------------------------------------------------------- /packages/next/src/form-dialog/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/dialog/style' ``` -------------------------------------------------------------------------------- /packages/next/src/form-drawer/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/drawer/style' ``` -------------------------------------------------------------------------------- /packages/next/src/reset/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/button/style' ``` -------------------------------------------------------------------------------- /packages/next/src/select/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/select/style' ``` -------------------------------------------------------------------------------- /packages/next/src/submit/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/button/style' ``` -------------------------------------------------------------------------------- /packages/next/src/switch/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/switch/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/cascader/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/cascader/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/checkbox/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/checkbox/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/transfer/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/transfer/style/index' ``` -------------------------------------------------------------------------------- /packages/next/src/cascader/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/cascader/style' ``` -------------------------------------------------------------------------------- /packages/next/src/checkbox/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/checkbox/style' ``` -------------------------------------------------------------------------------- /packages/next/src/transfer/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/transfer/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/date-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/date-picker/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/time-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/time-picker/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/tree-select/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/tree-select/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/number-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/input-number/style/index' ``` -------------------------------------------------------------------------------- /packages/next/src/date-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/date-picker/style' ``` -------------------------------------------------------------------------------- /packages/next/src/time-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/time-picker/style' ``` -------------------------------------------------------------------------------- /packages/next/src/tree-select/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/tree-select/style' ``` -------------------------------------------------------------------------------- /packages/next/src/time-picker2/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/time-picker2/style' ``` -------------------------------------------------------------------------------- /packages/element/src/__builtins__/configs/index.ts: -------------------------------------------------------------------------------- ```typescript export const stylePrefix = 'formily-element' ``` -------------------------------------------------------------------------------- /packages/next/src/number-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/number-picker/style' ``` -------------------------------------------------------------------------------- /packages/json-schema/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './schema' export * from './types' ``` -------------------------------------------------------------------------------- /packages/reactive-react/src/shared/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './gc' export * from './immediate' ``` -------------------------------------------------------------------------------- /packages/element/src/__builtins__/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './configs' export * from './shared' ``` -------------------------------------------------------------------------------- /packages/react/src/shared/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './context' export * from './connect' ``` -------------------------------------------------------------------------------- /docs/guide/advanced/input.less: -------------------------------------------------------------------------------- ``` input { background-color: transparent !important; } ``` -------------------------------------------------------------------------------- /packages/element/src/el-form/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/form.scss' ``` -------------------------------------------------------------------------------- /packages/antd/src/preview-text/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/tag/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/next/src/preview-text/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/tag/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/space/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/box/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-button-group/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/form/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/reset/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/button.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/submit/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/button.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/switch/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/switch.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/form-button-group/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/form/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/form-item/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/form/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/antd/src/radio/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/radio/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/antd/src/select-table/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/radio/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/array-items/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' // 依赖 import '../array-base/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/array-base/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/button/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/antd/src/array-items/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/button/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/transfer/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/transfer.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/array-base/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/button/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/array-items/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/button/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/select-table/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/select/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/upload/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/upload/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/el-form-item/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/form-item.scss' ``` -------------------------------------------------------------------------------- /packages/antd/src/__builtins__/hooks/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './useClickAway' export * from './usePrefixCls' ``` -------------------------------------------------------------------------------- /packages/next/src/__builtins__/hooks/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './useClickAway' export * from './usePrefixCls' ``` -------------------------------------------------------------------------------- /packages/core/src/effects/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './onFormEffects' export * from './onFieldEffects' ``` -------------------------------------------------------------------------------- /packages/next/src/date-picker2/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/date-picker2/style' import './main.scss' ``` -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- ```javascript module.exports = { extends: ['@commitlint/config-conventional'] } ``` -------------------------------------------------------------------------------- /packages/vue/bin/formily-vue-switch.js: -------------------------------------------------------------------------------- ```javascript #!/usr/bin/env node 'use strict' require('../scripts/switch-cli') ``` -------------------------------------------------------------------------------- /packages/element/src/form/style.ts: -------------------------------------------------------------------------------- ```typescript // 依赖 import '../preview-text/style' import '../form-layout/style' ``` -------------------------------------------------------------------------------- /packages/vue/bin/formily-vue-fix.js: -------------------------------------------------------------------------------- ```javascript #!/usr/bin/env node 'use strict' require('../scripts/postinstall') ``` -------------------------------------------------------------------------------- /packages/antd/src/array-tabs/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/tabs/style/index' import 'antd/lib/badge/style/index' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-tab/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/tabs/style/index' import 'antd/lib/badge/style/index' ``` -------------------------------------------------------------------------------- /packages/next/src/form-tab/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/tab/style' import '@alifd/next/lib/badge/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/form-collapse/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/collapse/style/index' import 'antd/lib/badge/style/index' ``` -------------------------------------------------------------------------------- /packages/reactive-react/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './observer' export * from './hooks' export * from './types' ``` -------------------------------------------------------------------------------- /packages/reactive-vue/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './observer' export * from './hooks' export * from './types' ``` -------------------------------------------------------------------------------- /packages/next/src/form-collapse/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/collapse/style' import '@alifd/next/lib/badge/style' ``` -------------------------------------------------------------------------------- /packages/element/src/array-base/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/button.scss' import './style.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/form-item/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/tooltip.scss' import './style.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/form-button-group/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' // 依赖 import '../form-item/style' import '../space/style' ``` -------------------------------------------------------------------------------- /packages/antd/src/radio/style.less: -------------------------------------------------------------------------------- ``` @root-entry-name: 'default'; @import (reference) '~antd/es/style/themes/index.less'; ``` -------------------------------------------------------------------------------- /packages/element/src/input/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/input.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/element/src/password/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/input.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/element/src/select/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/select.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/next/src/array-cards/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/button/style' import '@alifd/next/lib/card/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/next/src/editable/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/form/style' import '@alifd/next/lib/balloon/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/cascader/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/cascader.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/next/src/array-collapse/style.ts: -------------------------------------------------------------------------------- ```typescript import '@alifd/next/lib/collapse/style' import '@alifd/next/lib/card/style' import './main.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/form-grid/style.scss: -------------------------------------------------------------------------------- ```scss @import '../__builtins__/styles/common.scss'; .#{$formily-prefix}-form-grid { display: grid; } ``` -------------------------------------------------------------------------------- /packages/reactive-vue/src/types.ts: -------------------------------------------------------------------------------- ```typescript export interface IObserverOptions { name?: string scheduler?: (updater: () => void) => void } ``` -------------------------------------------------------------------------------- /packages/element/src/date-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/date-picker.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/element/src/time-picker/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/time-picker.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/element/docs/.vuepress/util.js: -------------------------------------------------------------------------------- ```javascript const fs = require('fs') module.exports = { getFiles(dir) { return fs.readdirSync(dir) }, } ``` -------------------------------------------------------------------------------- /packages/element/src/input-number/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/input-number.scss' // 依赖 import '../preview-text/style' ``` -------------------------------------------------------------------------------- /packages/validator/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './validator' export * from './parser' export * from './registry' export * from './types' ``` -------------------------------------------------------------------------------- /packages/vue/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base' export default baseConfig('formily.vue', 'Formily.Vue') ``` -------------------------------------------------------------------------------- /packages/reactive/src/global.d.ts: -------------------------------------------------------------------------------- ```typescript import * as Types from './types' declare global { namespace Formily.Reactive { export { Types } } } ``` -------------------------------------------------------------------------------- /packages/element/src/form-step/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/steps.scss' import 'element-ui/packages/theme-chalk/src/step.scss' ``` -------------------------------------------------------------------------------- /packages/core/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.core', 'Formily.Core') ``` -------------------------------------------------------------------------------- /packages/grid/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.grid', 'Formily.Grid') ``` -------------------------------------------------------------------------------- /packages/path/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.path', 'Formily.Path') ``` -------------------------------------------------------------------------------- /packages/element/src/upload/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/upload.scss' import 'element-ui/packages/theme-chalk/src/button.scss' ``` -------------------------------------------------------------------------------- /packages/element/src/editable/style.ts: -------------------------------------------------------------------------------- ```typescript import './style.scss' import 'element-ui/packages/theme-chalk/src/popover.scss' // 依赖 import '../form-item/style' ``` -------------------------------------------------------------------------------- /packages/react/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.react', 'Formily.React') ``` -------------------------------------------------------------------------------- /packages/shared/src/path.ts: -------------------------------------------------------------------------------- ```typescript import { Path as FormPath, Pattern as FormPathPattern } from '@formily/path' export { FormPath, FormPathPattern } ``` -------------------------------------------------------------------------------- /packages/core/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './shared/externals' export * from './models/types' export * from './effects' export * from './types' ``` -------------------------------------------------------------------------------- /packages/next/src/date-picker2/main.scss: -------------------------------------------------------------------------------- ```scss @import '~@alifd/next/lib/core/index-noreset.scss'; .#{$css-prefix}date-picker2 { & > * { width: 100%; } } ``` -------------------------------------------------------------------------------- /packages/shared/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.shared', 'Formily.Shared') ``` -------------------------------------------------------------------------------- /packages/element/src/form-layout/style.scss: -------------------------------------------------------------------------------- ```scss @import '../__builtins__/styles/common.scss'; .#{$formily-prefix}-form-inline { display: flex; flex-wrap: wrap; } ``` -------------------------------------------------------------------------------- /packages/reactive/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.reactive', 'Formily.Reactive') ``` -------------------------------------------------------------------------------- /packages/validator/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.validator', 'Formily.Validator') ``` -------------------------------------------------------------------------------- /packages/json-schema/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.json-schema', 'Formily.JSONSchema') ``` -------------------------------------------------------------------------------- /packages/reactive/src/annotations/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './observable' export * from './box' export * from './ref' export * from './shallow' export * from './computed' ``` -------------------------------------------------------------------------------- /packages/reactive-vue/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.reactive-vue', 'Formily.ReactiveVue') ``` -------------------------------------------------------------------------------- /packages/vue/src/shared/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './context' export * from './connect' export * from './h' export * from './fragment' export * from './createForm' ``` -------------------------------------------------------------------------------- /packages/antd/src/array-cards/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/card/style/index' import 'antd/lib/empty/style/index' import 'antd/lib/button/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/antd/src/editable/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/form/style/index' import 'antd/lib/space/style/index' import 'antd/lib/popover/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/reactive-react/rollup.config.js: -------------------------------------------------------------------------------- ```javascript import baseConfig from '../../scripts/rollup.base.js' export default baseConfig('formily.reactive-react', 'Formily.ReactiveReact') ``` -------------------------------------------------------------------------------- /devtools/chrome-extension/src/extension/popup.tsx: -------------------------------------------------------------------------------- ```typescript import React from 'react' import ReactDOM from 'react-dom' ReactDOM.render(<div>hello world</div>, document.getElementById('root')) ``` -------------------------------------------------------------------------------- /packages/antd/src/form-item/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/form/style/index' import 'antd/lib/tooltip/style/index' import 'antd/lib/popover/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/form-tab/style.scss: -------------------------------------------------------------------------------- ```scss @import '../__builtins__/styles/common.scss'; .#{$formily-prefix}-form-tab-errors-badge { line-height: 1; vertical-align: initial; } ``` -------------------------------------------------------------------------------- /packages/react/src/index.ts: -------------------------------------------------------------------------------- ```typescript export * from '@formily/json-schema' export * from './components' export * from './shared' export * from './hooks' export * from './types' ``` -------------------------------------------------------------------------------- /packages/element/src/form-collapse/style.scss: -------------------------------------------------------------------------------- ```scss @import '../__builtins__/styles/common.scss'; .#{$formily-prefix}-form-collapse-errors-badge { line-height: 1; vertical-align: initial; } ``` -------------------------------------------------------------------------------- /packages/antd/build-style.ts: -------------------------------------------------------------------------------- ```typescript import { build } from '../../scripts/build-style' build({ esStr: 'antd/es/', libStr: 'antd/lib/', allStylesOutputFile: 'dist/antd.css', }) ``` -------------------------------------------------------------------------------- /packages/json-schema/src/global.d.ts: -------------------------------------------------------------------------------- ```typescript /// <reference types="@formily/core" /> import * as Types from './types' declare global { namespace Formily.Schema { export { Types } } } ``` -------------------------------------------------------------------------------- /devtools/chrome-extension/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "include": ["./src/**/*.ts", "./src/**/*.tsx"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /packages/json-schema/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "include": ["./src/**/*.ts", "./src/**/*.tsx"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /packages/path/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "include": ["./src/**/*.ts", "./src/**/*.tsx"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /packages/reactive/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "include": ["./src/**/*.ts", "./src/**/*.tsx"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /packages/validator/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "include": ["./src/**/*.ts", "./src/**/*.tsx"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /packages/core/src/global.d.ts: -------------------------------------------------------------------------------- ```typescript import * as Types from './types' import * as Models from './models' declare global { namespace Formily.Core { export { Types, Models } } } ``` -------------------------------------------------------------------------------- /packages/next/src/upload/main.scss: -------------------------------------------------------------------------------- ```scss @import '~@alifd/next/lib/core/index-noreset.scss'; $upload-prefix-cls: '#{$css-prefix}upload'; .#{$upload-prefix-cls}-list { margin-top: 4px; } ``` -------------------------------------------------------------------------------- /packages/vue/src/hooks/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './useForm' export * from './useField' export * from './useFormEffects' export * from './useFieldSchema' export * from './useParentForm' ``` -------------------------------------------------------------------------------- /packages/antd/src/__builtins__/index.ts: -------------------------------------------------------------------------------- ```typescript export * from './moment' export * from './hooks' export * from './portal' export * from './loading' export * from './pickDataProps' export * from './sort' ``` -------------------------------------------------------------------------------- /packages/element/build-style.ts: -------------------------------------------------------------------------------- ```typescript import { build } from '../../scripts/build-style' build({ esStr: 'element/es/', libStr: 'element/lib/', allStylesOutputFile: 'dist/element.css', }) ``` -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "compilerOptions": { "esModuleInterop": true, "moduleResolution": "node", "allowJs": true, "module": "commonjs", "target": "es5", } } ``` -------------------------------------------------------------------------------- /packages/next/build-style.ts: -------------------------------------------------------------------------------- ```typescript import { build } from '../../scripts/build-style' build({ esStr: '@alifd/next/es/', libStr: '@alifd/next/lib/', allStylesOutputFile: 'dist/next.css', }) ``` -------------------------------------------------------------------------------- /packages/next/src/form-grid/main.scss: -------------------------------------------------------------------------------- ```scss @import '~@alifd/next/lib/core/index-noreset.scss'; $form-grid-prefix-cls: '#{$css-prefix}formily-grid'; .#{$form-grid-prefix-cls}-layout { display: grid; } ``` -------------------------------------------------------------------------------- /packages/element/src/__builtins__/shared/types.ts: -------------------------------------------------------------------------------- ```typescript import { Component, VNode } from 'vue' export type SlotTypes = | Component | string | number | ((props: Record<string, any>) => VNode[] | VNode) | VNode ``` -------------------------------------------------------------------------------- /packages/vue/src/hooks/useFieldSchema.ts: -------------------------------------------------------------------------------- ```typescript import { inject, ref } from 'vue-demi' import { SchemaSymbol } from '../shared/context' export const useFieldSchema = () => { return inject(SchemaSymbol, ref()) } ``` -------------------------------------------------------------------------------- /packages/reactive-react/src/hooks/useLayoutEffect.ts: -------------------------------------------------------------------------------- ```typescript import { useEffect, useLayoutEffect as _useLayoutEffect } from 'react' export const useLayoutEffect = typeof document !== 'undefined' ? _useLayoutEffect : useEffect ``` -------------------------------------------------------------------------------- /packages/antd/src/array-collapse/style.ts: -------------------------------------------------------------------------------- ```typescript import 'antd/lib/collapse/style/index' import 'antd/lib/empty/style/index' import 'antd/lib/button/style/index' import 'antd/lib/badge/style/index' import './style.less' ``` -------------------------------------------------------------------------------- /packages/element/src/form-dialog/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/dialog.scss' import 'element-ui/packages/theme-chalk/src/button.scss' import 'element-ui/packages/theme-chalk/src/loading.scss' ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/tsconfig.json: -------------------------------------------------------------------------------- ```json { "extends": "../../tsconfig.json", "compilerOptions": { "allowJs": true }, "include": ["./src/**/*.js"], "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"] } ``` -------------------------------------------------------------------------------- /devtools/chrome-extension/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/antd/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/benchmark/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/element/src/radio/style.ts: -------------------------------------------------------------------------------- ```typescript import 'element-ui/packages/theme-chalk/src/radio.scss' import 'element-ui/packages/theme-chalk/src/radio-group.scss' import 'element-ui/packages/theme-chalk/src/radio-button.scss' ``` -------------------------------------------------------------------------------- /packages/element/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/grid/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/json-schema/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/next/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/path/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/react/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/reactive-react/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/reactive-test-cases-for-react18/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/reactive-vue/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/reactive/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/shared/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ``` -------------------------------------------------------------------------------- /packages/validator/tsconfig.build.json: -------------------------------------------------------------------------------- ```json { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./lib", "paths": { "@formily/*": ["packages/*", "devtools/*"] }, "declaration": true } } ```