├── .env.dist
├── .gitignore
├── LICENSE
├── README.md
├── assets
├── .gitignore
├── js
│ ├── App.jsx
│ └── components
│ │ ├── Option.jsx
│ │ └── Type.jsx
└── scss
│ ├── app.scss
│ ├── jekyll-theme-cayman.scss
│ ├── normalize.scss
│ ├── rouge-github.scss
│ └── variables.scss
├── bin
├── console
└── update.sh
├── composer-3.4.json
├── composer-4.3.json
├── composer-4.4.json
├── composer-5.0.json
├── composer-master.json
├── composer.json
├── composer.lock
├── config
├── bundles.php
├── packages
│ ├── dev
│ │ └── routing.yaml
│ ├── doctrine.yaml
│ ├── framework.yaml
│ ├── prod
│ │ └── doctrine.yaml
│ ├── routing.yaml
│ ├── test
│ │ └── framework.yaml
│ └── translation.yaml
├── routes.yaml
├── routes
│ └── annotations.yaml
└── services.yaml
├── docs
├── 3.4.35.json
├── 4.3.8.json
├── 4.4.0.json
├── build
│ ├── css
│ │ └── app.css
│ ├── js
│ │ └── app.js
│ └── manifest.json
├── docs.json
├── index.html
└── master.json
├── package.json
├── src
├── Command
│ └── BuildCommand.php
├── Entity
│ └── .gitignore
└── Kernel.php
├── symfony.lock
├── tests
└── .gitignore
├── translations
└── .gitignore
├── webpack.config.js
└── yarn.lock
/.env.dist:
--------------------------------------------------------------------------------
1 | # This file is a "template" of which env vars need to be defined for your application
2 | # Copy this file to .env file for development, create environment variables when deploying to production
3 | # https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
4 |
5 | ###> symfony/framework-bundle ###
6 | APP_ENV=dev
7 | APP_SECRET=fac90ea7a46ce7f8ba6b044165a4b43a
8 | #TRUSTED_PROXIES=127.0.0.1,127.0.0.2
9 | #TRUSTED_HOSTS=localhost,example.com
10 | ###< symfony/framework-bundle ###
11 |
12 | ###> doctrine/doctrine-bundle ###
13 | # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
14 | # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
15 | # Configure your db driver and server_version in config/packages/doctrine.yaml
16 | DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
17 | ###< doctrine/doctrine-bundle ###
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | ###> symfony/framework-bundle ###
58 | .env
59 | /public/bundles/
60 | /var/
61 | /vendor/
62 | ###< symfony/framework-bundle ###
63 |
64 |
65 | ###> symfony/webpack-encore-pack ###
66 | /node_modules/
67 | /public/build/
68 | ###< symfony/webpack-encore-pack ###
69 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Yonel Ceruto
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Symfony Forms Reference Generator
2 |
3 | TODO:
4 | - [X] Generate content per Symfony version (LTS, CURRENT, MASTER).
5 | - [X] Highlight deprecated options.
6 | - [ ] Show diff between versions.
7 | - [ ] Add option link to official docs.
8 |
--------------------------------------------------------------------------------
/assets/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phplancer/symfony-form/a8146fe6c44c366b04af6a99b18d54bda7695179/assets/.gitignore
--------------------------------------------------------------------------------
/assets/js/App.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import ReactDOM from 'react-dom';
3 | import Type from './components/Type'
4 |
5 | class App extends Component {
6 | constructor(props) {
7 | super(props);
8 | this.state = {
9 | versions: [],
10 | version: null,
11 | error: null,
12 | is_loaded: false,
13 | symfony_version: null,
14 | updated_at: null,
15 | composer_info: null,
16 | types: [],
17 | type_extensions: [],
18 | type_guessers: []
19 | };
20 |
21 | this.handleClick = this.handleClick.bind(this);
22 | }
23 |
24 | componentDidMount() {
25 | fetch('docs.json')
26 | .then(data => data.json())
27 | .then(docs => {
28 | const hash = window.location.hash;
29 | const version = hash.indexOf('/') > -1 ? hash.split('/')[0].substr(1) : docs.versions[0];
30 |
31 | this.setState({
32 | versions: docs.versions,
33 | version: version,
34 | });
35 | this.fetchDocs(version);
36 | });
37 | }
38 |
39 | handleClick(version) {
40 | if (version === this.state.version) {
41 | return;
42 | }
43 |
44 | this.setState({
45 | version: version,
46 | });
47 |
48 | this.fetchDocs(version, true);
49 | };
50 |
51 | fetchDocs(version, clearHash = false) {
52 | fetch(version + '.json')
53 | .then(data => data.json())
54 | .then((result) => {
55 | this.setState({
56 | is_loaded: true,
57 | symfony_version: result.version,
58 | updated_at: result.updated_at,
59 | composer_info: result.composer_info,
60 | types: result.types,
61 | type_extensions: result.type_extensions,
62 | type_guessers: result.type_guessers
63 | });
64 |
65 | // after update state, check by hash to scroll in
66 | const hash = window.location.hash;
67 | if (hash) {
68 | window.location.hash = '';
69 | if (!clearHash) window.location.hash = hash;
70 | }
71 | },
72 | // Note: it's important to handle errors here
73 | // instead of a catch() block so that we don't swallow
74 | // exceptions from actual bugs in components.
75 | (error) => {
76 | this.setState({
77 | is_loaded: true,
78 | error
79 | });
80 | });
81 | }
82 |
83 | render() {
84 | const {
85 | error, is_loaded,
86 | versions, version, symfony_version, updated_at, composer_info,
87 | types, type_extensions, type_guessers
88 | } = this.state;
89 |
90 | if (error) {
91 | return
Error: {error.message}
;
92 | }
93 | if (!is_loaded) {
94 | return '';
95 | }
96 |
97 | return (
98 |
99 |
100 | Form Types Reference
101 | Symfony comes standard with a large group of field types that cover all of the common form fields and data types you'll encounter.
102 |
103 | View on GitHub
104 | Download .zip
105 | Download .tar.gz
106 |
107 |
108 |
109 |
110 | {versions.map((v) => (
111 | this.handleClick(v)}>{v}
112 | ))}
113 |
114 |
115 | Built-in Field Types
116 |
117 | {types.map(type => (
118 |
{type.name}
119 | ))}
120 |
121 |
122 | Type Extensions
123 |
124 | {type_extensions.map(type => (
125 |
{type.name}
126 | ))}
127 |
128 |
129 | Type Guessers
130 |
131 | {type_guessers.map(type => (
132 |
{type.name}
133 | ))}
134 |
135 |
136 |
137 |
138 |
139 |
Symfony version:
{symfony_version} ( Composer Info )
140 |
Last update: {updated_at}
141 |
142 |
143 |
144 |
145 | {types.map(type => (
146 |
157 | ))}
158 |
159 |
163 |
164 |
165 | );
166 | }
167 | }
168 |
169 | ReactDOM.render(
170 | ,
171 | document.getElementById('root')
172 | );
173 |
--------------------------------------------------------------------------------
/assets/js/components/Option.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import PropTypes from "prop-types";
3 | import Type from "./Type";
4 |
5 | export default class Option extends Component {
6 | constructor(props) {
7 | super(props);
8 | this.state = {
9 | show_definition: props.show_definition
10 | };
11 |
12 | this.handleClick = this.handleClick.bind(this);
13 | this.handleBlur = this.handleBlur.bind(this);
14 | }
15 |
16 | handleClick(event) {
17 | event.preventDefault();
18 | this.setState(prevState => ({
19 | show_definition: !prevState.show_definition
20 | }));
21 | };
22 |
23 | handleBlur() {
24 | this.setState({show_definition: false});
25 | };
26 |
27 | render() {
28 | const {cls, name, required, default_value, deprecated, deprecation_message, is_lazy, allowed_types, allowed_values, has_normalizer, version} = this.props;
29 | const show_definition = this.state.show_definition;
30 | const id = version + '/' + Type.getClassName(cls) + '/' + name;
31 | const stringify = JSON.stringify(default_value, null, ' ');
32 | const final_deprecation_message = deprecation_message ? deprecation_message : 'Some values has been deprecated.';
33 |
34 | return (
35 |
39 |
﹟
40 |
{name}
{required ? '*' : ''}
41 |
42 | {deprecated &&
- Deprecated! {final_deprecation_message}
}
43 | {undefined !== default_value &&
- Default value: {'{}' === stringify ? '[object]' : stringify}
}
44 | {is_lazy &&
- Has lazy default function.
}
45 | {allowed_types &&
- Allowed types: {JSON.stringify(allowed_types, null, ' ')}
}
46 | {allowed_values &&
- Allowed values: {JSON.stringify(allowed_values, null, ' ')}
}
47 | {has_normalizer &&
- Has normalizer function.
}
48 | {required &&
- Required.
||
- Optional.
}
49 |
50 |
51 | )
52 | }
53 | }
54 |
55 | Option.propTypes = {
56 | cls: PropTypes.string.isRequired,
57 | name: PropTypes.string.isRequired,
58 | required: PropTypes.bool.isRequired,
59 | default_value: PropTypes.any,
60 | deprecated: PropTypes.bool,
61 | deprecation_message: PropTypes.string,
62 | is_lazy: PropTypes.bool,
63 | allowed_types: PropTypes.array,
64 | allowed_values: PropTypes.array,
65 | has_normalizer: PropTypes.bool,
66 | };
67 |
--------------------------------------------------------------------------------
/assets/js/components/Type.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import PropTypes from 'prop-types'
3 | import Option from './Option'
4 |
5 | export default class Type extends Component {
6 | constructor(props) {
7 | super(props);
8 | }
9 |
10 | static getClassName(cls) {
11 | return cls.split('\\').slice(-1)[0];
12 | }
13 |
14 | renderOptions(options) {
15 | let i = 0;
16 | let result = [];
17 | for (let cls in options) {
18 | if (cls !== this.props.cls) {
19 | const className = Type.getClassName(cls);
20 | result.push(
21 |
24 | );
25 | }
26 | options[cls].map(option => {
27 | const id = '#' + this.props.version + '/' + Type.getClassName(this.props.cls) + '/' + option.name;
28 | result.push(
29 | )
44 | })
45 | }
46 | return result;
47 | }
48 |
49 | renderParentTypes(colSpan) {
50 | const parent_types = this.props.parent_types;
51 |
52 | if (0 === parent_types.length) {
53 | return;
54 | }
55 |
56 | return [
57 |
58 | Parent types |
59 |
,
60 |
61 |
62 | {parent_types.map((parent_class, index) => {
63 | const className = Type.getClassName(parent_class);
64 | return {className}
65 | })}
66 | |
67 |
68 | ]
69 | }
70 |
71 | renderTypeExtensions(colSpan) {
72 | const type_extensions = this.props.type_extensions;
73 |
74 | if (0 === type_extensions.length) {
75 | return;
76 | }
77 |
78 | return [
79 |
80 | Type extensions |
81 |
,
82 |
83 |
84 | {type_extensions.map((extensions_class, index) => {
85 | const className = Type.getClassName(extensions_class);
86 | return {className} ;
87 | })}
88 | |
89 |
90 | ]
91 | }
92 |
93 | render() {
94 | const {name, cls, api, block_prefix, options, version} = this.props;
95 | const colSpan = (0 !== options.own.length) + (0 !== options.overridden.length) + (0 !== options.parent.length) + (0 !== options.extension.length);
96 | const col_width = (100 / colSpan).toFixed(0) + '%';
97 |
98 | return (
99 |
100 |
101 |
102 |
103 | Block prefix: {block_prefix}
104 | Class: {cls}
105 |
106 |
107 |
108 |
109 |
110 | {0 !== options.own.length && Options | }
111 | {0 !== options.overridden.length && Overridden options | }
112 | {0 !== options.parent.length && Parent options | }
113 | {0 !== options.extension.length && Extension options | }
114 |
115 |
116 |
117 |
118 | {0 !== options.own.length && {this.renderOptions(options.own)} | }
119 | {0 !== options.overridden.length && {this.renderOptions(options.overridden)} | }
120 | {0 !== options.parent.length && {this.renderOptions(options.parent)} | }
121 | {0 !== options.extension.length && {this.renderOptions(options.extension)} | }
122 |
123 | {this.renderParentTypes(colSpan)}
124 | {this.renderTypeExtensions(colSpan)}
125 |
126 |
127 |
128 | );
129 | }
130 | }
131 |
132 | Type.propTypes = {
133 | name: PropTypes.string.isRequired,
134 | cls: PropTypes.string.isRequired,
135 | api: PropTypes.string.isRequired,
136 | block_prefix: PropTypes.string.isRequired,
137 | options: PropTypes.object.isRequired,
138 | parent_types: PropTypes.array,
139 | type_extensions: PropTypes.array,
140 | };
141 |
--------------------------------------------------------------------------------
/assets/scss/app.scss:
--------------------------------------------------------------------------------
1 | @import "jekyll-theme-cayman";
2 |
3 | ul > li,
4 | ol > li {
5 | margin-bottom: 0.5rem;
6 | }
7 |
8 | h3 {
9 | margin-top: 3rem !important;
10 | color: $body-link-color !important;
11 | font-weight: bold;
12 | }
13 |
14 | .composer-info-container {
15 | > .composer-info-label {
16 | text-decoration: white underline;
17 | }
18 |
19 | > .composer-info {
20 | display: none;
21 | > pre {
22 | margin-top: -0.1rem;
23 | padding-top: 1.1rem;
24 | }
25 | }
26 |
27 | &:hover > .composer-info {
28 | display: block;
29 | }
30 | }
31 |
32 | .required {
33 | font-weight: bold;
34 | }
35 |
36 | .option-div {
37 | > .option-link {
38 | position: absolute;
39 | margin-left: -16px;
40 | opacity: 0;
41 | }
42 |
43 | &:hover > .option-link {
44 | opacity: 1;
45 | }
46 | }
47 |
48 | .option-group {
49 | font-size: 1rem;
50 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
51 | margin-top: 1rem;
52 | margin-bottom: 0.4rem;
53 | border-bottom: 1px solid $table-border-color;
54 | }
55 |
56 | .option-definition {
57 | color: $code-bg-color;
58 | background-color: $code-text-color;
59 | border-radius: 0 0 0.3rem 0.3rem;
60 | margin-top: -1px;
61 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
62 | font-size: 0.8rem;
63 | padding: 0.7rem 1rem;
64 | position: absolute;
65 | max-width: 450px;
66 | min-width: 240px;
67 | z-index: 1;
68 | }
69 |
70 | code.deprecated {
71 | text-decoration-line: line-through;
72 | }
73 |
74 | .selected {
75 | code {
76 | color: $code-bg-color;
77 | background-color: #435c67;
78 | border-radius: 0.3rem 0.3rem 0 0;
79 | }
80 |
81 | ul > li {
82 | margin-bottom: 0;
83 | }
84 | }
85 |
86 | .mr-0-5 {
87 | margin-right: 0.5rem !important;
88 | }
89 |
90 | .mt-2 {
91 | margin-top: 2rem !important;
92 | }
93 |
94 | .mt-3 {
95 | margin-top: 3rem !important;
96 | }
97 |
98 | .no-margin {
99 | margin: 0 !important;
100 | }
101 |
102 | .float-left {
103 | float: left !important;
104 | }
105 |
106 | .build-info-container {
107 | background-color: $code-text-color;
108 |
109 | > .build-info {
110 | font-size: 0.8rem;
111 | color: white;
112 |
113 | @include large {
114 | max-width: 81rem;
115 | padding: 3rem 6rem;
116 | margin: 0 auto;
117 | }
118 |
119 | @include medium {
120 | padding: 2rem 4rem;
121 | }
122 |
123 | @include small {
124 | padding: 2rem 1rem;
125 | }
126 | }
127 | }
128 | .sf-doc-versions-container {
129 | code {
130 | font-size: 16px;
131 | color: #156d84;
132 | background-color: #eeeeee;
133 | margin-right: 5px;
134 | padding: 2px 7px 1px 7px;
135 | cursor: pointer;
136 | &.selected {
137 | color: #eeeeee;
138 | background-color: #156d84;
139 | }
140 | }
141 | }
142 |
--------------------------------------------------------------------------------
/assets/scss/jekyll-theme-cayman.scss:
--------------------------------------------------------------------------------
1 | @import "normalize";
2 | @import "rouge-github";
3 | @import "variables";
4 |
5 | @mixin large {
6 | @media screen and (min-width: #{$large-breakpoint}) {
7 | @content;
8 | }
9 | }
10 |
11 | @mixin medium {
12 | @media screen and (min-width: #{$medium-breakpoint}) and (max-width: #{$large-breakpoint}) {
13 | @content;
14 | }
15 | }
16 |
17 | @mixin small {
18 | @media screen and (max-width: #{$medium-breakpoint}) {
19 | @content;
20 | }
21 | }
22 |
23 | * {
24 | box-sizing: border-box;
25 | }
26 |
27 | body {
28 | padding: 0;
29 | margin: 0;
30 | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
31 | font-size: 16px;
32 | line-height: 1.5;
33 | color: $body-text-color;
34 | }
35 |
36 | a {
37 | color: $body-link-color;
38 | text-decoration: none;
39 |
40 | &:hover {
41 | text-decoration: underline;
42 | }
43 | }
44 |
45 | .btn {
46 | display: inline-block;
47 | margin-bottom: 1rem;
48 | color: rgba(255, 255, 255, 0.7);
49 | background-color: rgba(255, 255, 255, 0.08);
50 | border-color: rgba(255, 255, 255, 0.2);
51 | border-style: solid;
52 | border-width: 1px;
53 | border-radius: 0.3rem;
54 | transition: color 0.2s, background-color 0.2s, border-color 0.2s;
55 |
56 | &:hover {
57 | color: rgba(255, 255, 255, 0.8);
58 | text-decoration: none;
59 | background-color: rgba(255, 255, 255, 0.2);
60 | border-color: rgba(255, 255, 255, 0.3);
61 | }
62 |
63 | + .btn {
64 | margin-left: 1rem;
65 | }
66 |
67 | @include large {
68 | padding: 0.75rem 1rem;
69 | }
70 |
71 | @include medium {
72 | padding: 0.6rem 0.9rem;
73 | font-size: 0.9rem;
74 | }
75 |
76 | @include small {
77 | display: block;
78 | width: 100%;
79 | padding: 0.75rem;
80 | font-size: 0.9rem;
81 |
82 | + .btn {
83 | margin-top: 1rem;
84 | margin-left: 0;
85 | }
86 | }
87 | }
88 |
89 | .page-header {
90 | color: $header-heading-color;
91 | text-align: center;
92 | background-color: $header-bg-color;
93 | background-image: linear-gradient(120deg, $header-bg-color-secondary, $header-bg-color);
94 |
95 | @include large {
96 | padding: 4rem 6rem;
97 | }
98 |
99 | @include medium {
100 | padding: 3rem 4rem;
101 | }
102 |
103 | @include small {
104 | padding: 2rem 1rem;
105 | }
106 | }
107 |
108 | .project-name {
109 | margin-top: 0;
110 | margin-bottom: 0.1rem;
111 |
112 | @include large {
113 | font-size: 3.25rem;
114 | }
115 |
116 | @include medium {
117 | font-size: 2.25rem;
118 | }
119 |
120 | @include small {
121 | font-size: 1.75rem;
122 | }
123 | }
124 |
125 | .project-tagline {
126 | margin-bottom: 2rem;
127 | font-weight: normal;
128 | opacity: 0.7;
129 |
130 | @include large {
131 | font-size: 1.25rem;
132 | }
133 |
134 | @include medium {
135 | font-size: 1.15rem;
136 | }
137 |
138 | @include small {
139 | font-size: 1rem;
140 | }
141 | }
142 |
143 | .main-content {
144 | word-wrap: break-word;
145 |
146 | :first-child {
147 | margin-top: 0;
148 | }
149 |
150 | @include large {
151 | max-width: 81rem;
152 | padding: 2rem 6rem;
153 | margin: 0 auto;
154 | font-size: 1.1rem;
155 | }
156 |
157 | @include medium {
158 | padding: 2rem 4rem;
159 | font-size: 1.1rem;
160 | }
161 |
162 | @include small {
163 | padding: 2rem 1rem;
164 | font-size: 1rem;
165 | }
166 |
167 | img {
168 | max-width: 100%;
169 | }
170 |
171 | h1,
172 | h2,
173 | h3,
174 | h4,
175 | h5,
176 | h6 {
177 | margin-top: 2rem;
178 | margin-bottom: 1rem;
179 | font-weight: normal;
180 | color: $section-headings-color;
181 | }
182 |
183 | p {
184 | margin-bottom: 1em;
185 | }
186 |
187 | code {
188 | padding: 2px 4px;
189 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
190 | font-size: 0.9rem;
191 | color: $code-text-color;
192 | background-color: $code-bg-color;
193 | border-radius: 0.3rem;
194 | }
195 |
196 | pre {
197 | padding: 0.8rem;
198 | margin-top: 0;
199 | margin-bottom: 1rem;
200 | font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace;
201 | color: $code-text-color;
202 | word-wrap: normal;
203 | background-color: $code-bg-color;
204 | border: solid 1px $border-color;
205 | border-radius: 0.3rem;
206 |
207 | > code {
208 | padding: 0;
209 | margin: 0;
210 | font-size: 0.9rem;
211 | color: $code-text-color;
212 | word-break: normal;
213 | white-space: pre;
214 | background: transparent;
215 | border: 0;
216 | }
217 | }
218 |
219 | .highlight {
220 | margin-bottom: 1rem;
221 |
222 | pre {
223 | margin-bottom: 0;
224 | word-break: normal;
225 | }
226 | }
227 |
228 | .highlight pre,
229 | pre {
230 | padding: 0.8rem;
231 | overflow: auto;
232 | font-size: 0.9rem;
233 | line-height: 1.45;
234 | border-radius: 0.3rem;
235 | -webkit-overflow-scrolling: touch;
236 | }
237 |
238 | pre code,
239 | pre tt {
240 | display: inline;
241 | max-width: initial;
242 | padding: 0;
243 | margin: 0;
244 | overflow: initial;
245 | line-height: inherit;
246 | word-wrap: normal;
247 | background-color: transparent;
248 | border: 0;
249 |
250 | &:before,
251 | &:after {
252 | content: normal;
253 | }
254 | }
255 |
256 | ul,
257 | ol {
258 | margin-top: 0;
259 | }
260 |
261 | blockquote {
262 | padding: 0 1rem;
263 | margin-left: 0;
264 | color: $blockquote-text-color;
265 | border-left: 0.3rem solid $border-color;
266 |
267 | > :first-child {
268 | margin-top: 0;
269 | }
270 |
271 | > :last-child {
272 | margin-bottom: 0;
273 | }
274 | }
275 |
276 | table {
277 | width: 100%;
278 | overflow: auto;
279 | word-break: normal;
280 | word-break: keep-all; // For Firefox to horizontally scroll wider tables.
281 | -webkit-overflow-scrolling: touch;
282 |
283 | caption {
284 | border-bottom: none !important;
285 | }
286 |
287 | caption, th {
288 | font-weight: normal;
289 | text-align: left;
290 | background-color: $code-bg-color;
291 | }
292 |
293 | caption, th,
294 | td {
295 | padding: 0.5rem 1rem;
296 | border: 1px solid $table-border-color;
297 | vertical-align: top;
298 | }
299 | }
300 |
301 | dl {
302 | padding: 0;
303 |
304 | dt {
305 | padding: 0;
306 | margin-top: 1rem;
307 | font-size: 1rem;
308 | font-weight: bold;
309 | }
310 |
311 | dd {
312 | padding: 0;
313 | margin-bottom: 1rem;
314 | }
315 | }
316 |
317 | hr {
318 | height: 2px;
319 | padding: 0;
320 | margin: 1rem 0;
321 | background-color: $hr-border-color;
322 | border: 0;
323 | }
324 | }
325 |
326 | .site-footer {
327 | padding-top: 2rem;
328 | margin-top: 2rem;
329 | border-top: solid 1px $hr-border-color;
330 |
331 | @include large {
332 | font-size: 1rem;
333 | }
334 |
335 | @include medium {
336 | font-size: 1rem;
337 | }
338 |
339 | @include small {
340 | font-size: 0.9rem;
341 | }
342 | }
343 |
344 | .site-footer-owner {
345 | display: block;
346 | font-weight: bold;
347 | }
348 |
349 | .site-footer-credits {
350 | color: $blockquote-text-color;
351 | }
352 |
--------------------------------------------------------------------------------
/assets/scss/normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
29 | * and Firefox.
30 | * Correct `block` display not defined for `main` in IE 11.
31 | */
32 |
33 | article,
34 | aside,
35 | details,
36 | figcaption,
37 | figure,
38 | footer,
39 | header,
40 | hgroup,
41 | main,
42 | menu,
43 | nav,
44 | section,
45 | summary {
46 | display: block;
47 | }
48 |
49 | /**
50 | * 1. Correct `inline-block` display not defined in IE 8/9.
51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
52 | */
53 |
54 | audio,
55 | canvas,
56 | progress,
57 | video {
58 | display: inline-block; /* 1 */
59 | vertical-align: baseline; /* 2 */
60 | }
61 |
62 | /**
63 | * Prevent modern browsers from displaying `audio` without controls.
64 | * Remove excess height in iOS 5 devices.
65 | */
66 |
67 | audio:not([controls]) {
68 | display: none;
69 | height: 0;
70 | }
71 |
72 | /**
73 | * Address `[hidden]` styling not present in IE 8/9/10.
74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
75 | */
76 |
77 | [hidden],
78 | template {
79 | display: none;
80 | }
81 |
82 | /* Links
83 | ========================================================================== */
84 |
85 | /**
86 | * Remove the gray background color from active links in IE 10.
87 | */
88 |
89 | a {
90 | background-color: transparent;
91 | }
92 |
93 | /**
94 | * Improve readability when focused and also mouse hovered in all browsers.
95 | */
96 |
97 | a:active,
98 | a:hover {
99 | outline: 0;
100 | }
101 |
102 | /* Text-level semantics
103 | ========================================================================== */
104 |
105 | /**
106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
107 | */
108 |
109 | abbr[title] {
110 | border-bottom: 1px dotted;
111 | }
112 |
113 | /**
114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
115 | */
116 |
117 | b,
118 | strong {
119 | font-weight: bold;
120 | }
121 |
122 | /**
123 | * Address styling not present in Safari and Chrome.
124 | */
125 |
126 | dfn {
127 | font-style: italic;
128 | }
129 |
130 | /**
131 | * Address variable `h1` font-size and margin within `section` and `article`
132 | * contexts in Firefox 4+, Safari, and Chrome.
133 | */
134 |
135 | h1 {
136 | font-size: 2em;
137 | margin: 0.67em 0;
138 | }
139 |
140 | /**
141 | * Address styling not present in IE 8/9.
142 | */
143 |
144 | mark {
145 | background: #ff0;
146 | color: #000;
147 | }
148 |
149 | /**
150 | * Address inconsistent and variable font size in all browsers.
151 | */
152 |
153 | small {
154 | font-size: 80%;
155 | }
156 |
157 | /**
158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
159 | */
160 |
161 | sub,
162 | sup {
163 | font-size: 75%;
164 | line-height: 0;
165 | position: relative;
166 | vertical-align: baseline;
167 | }
168 |
169 | sup {
170 | top: -0.5em;
171 | }
172 |
173 | sub {
174 | bottom: -0.25em;
175 | }
176 |
177 | /* Embedded content
178 | ========================================================================== */
179 |
180 | /**
181 | * Remove border when inside `a` element in IE 8/9/10.
182 | */
183 |
184 | img {
185 | border: 0;
186 | }
187 |
188 | /**
189 | * Correct overflow not hidden in IE 9/10/11.
190 | */
191 |
192 | svg:not(:root) {
193 | overflow: hidden;
194 | }
195 |
196 | /* Grouping content
197 | ========================================================================== */
198 |
199 | /**
200 | * Address margin not present in IE 8/9 and Safari.
201 | */
202 |
203 | figure {
204 | margin: 1em 40px;
205 | }
206 |
207 | /**
208 | * Address differences between Firefox and other browsers.
209 | */
210 |
211 | hr {
212 | box-sizing: content-box;
213 | height: 0;
214 | }
215 |
216 | /**
217 | * Contain overflow in all browsers.
218 | */
219 |
220 | pre {
221 | overflow: auto;
222 | }
223 |
224 | /**
225 | * Address odd `em`-unit font size rendering in all browsers.
226 | */
227 |
228 | code,
229 | kbd,
230 | pre,
231 | samp {
232 | font-family: monospace, monospace;
233 | font-size: 1em;
234 | }
235 |
236 | /* Forms
237 | ========================================================================== */
238 |
239 | /**
240 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
241 | * styling of `select`, unless a `border` property is set.
242 | */
243 |
244 | /**
245 | * 1. Correct color not being inherited.
246 | * Known issue: affects color of disabled elements.
247 | * 2. Correct font properties not being inherited.
248 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
249 | */
250 |
251 | button,
252 | input,
253 | optgroup,
254 | select,
255 | textarea {
256 | color: inherit; /* 1 */
257 | font: inherit; /* 2 */
258 | margin: 0; /* 3 */
259 | }
260 |
261 | /**
262 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
263 | */
264 |
265 | button {
266 | overflow: visible;
267 | }
268 |
269 | /**
270 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
271 | * All other form control elements do not inherit `text-transform` values.
272 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
273 | * Correct `select` style inheritance in Firefox.
274 | */
275 |
276 | button,
277 | select {
278 | text-transform: none;
279 | }
280 |
281 | /**
282 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
283 | * and `video` controls.
284 | * 2. Correct inability to style clickable `input` types in iOS.
285 | * 3. Improve usability and consistency of cursor style between image-type
286 | * `input` and others.
287 | */
288 |
289 | button,
290 | html input[type="button"], /* 1 */
291 | input[type="reset"],
292 | input[type="submit"] {
293 | -webkit-appearance: button; /* 2 */
294 | cursor: pointer; /* 3 */
295 | }
296 |
297 | /**
298 | * Re-set default cursor for disabled elements.
299 | */
300 |
301 | button[disabled],
302 | html input[disabled] {
303 | cursor: default;
304 | }
305 |
306 | /**
307 | * Remove inner padding and border in Firefox 4+.
308 | */
309 |
310 | button::-moz-focus-inner,
311 | input::-moz-focus-inner {
312 | border: 0;
313 | padding: 0;
314 | }
315 |
316 | /**
317 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
318 | * the UA stylesheet.
319 | */
320 |
321 | input {
322 | line-height: normal;
323 | }
324 |
325 | /**
326 | * It's recommended that you don't attempt to style these elements.
327 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
328 | *
329 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
330 | * 2. Remove excess padding in IE 8/9/10.
331 | */
332 |
333 | input[type="checkbox"],
334 | input[type="radio"] {
335 | box-sizing: border-box; /* 1 */
336 | padding: 0; /* 2 */
337 | }
338 |
339 | /**
340 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
341 | * `font-size` values of the `input`, it causes the cursor style of the
342 | * decrement button to change from `default` to `text`.
343 | */
344 |
345 | input[type="number"]::-webkit-inner-spin-button,
346 | input[type="number"]::-webkit-outer-spin-button {
347 | height: auto;
348 | }
349 |
350 | /**
351 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
352 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
353 | * (include `-moz` to future-proof).
354 | */
355 |
356 | input[type="search"] {
357 | -webkit-appearance: textfield; /* 1 */ /* 2 */
358 | box-sizing: content-box;
359 | }
360 |
361 | /**
362 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
363 | * Safari (but not Chrome) clips the cancel button when the search input has
364 | * padding (and `textfield` appearance).
365 | */
366 |
367 | input[type="search"]::-webkit-search-cancel-button,
368 | input[type="search"]::-webkit-search-decoration {
369 | -webkit-appearance: none;
370 | }
371 |
372 | /**
373 | * Define consistent border, margin, and padding.
374 | */
375 |
376 | fieldset {
377 | border: 1px solid #c0c0c0;
378 | margin: 0 2px;
379 | padding: 0.35em 0.625em 0.75em;
380 | }
381 |
382 | /**
383 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
384 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
385 | */
386 |
387 | legend {
388 | border: 0; /* 1 */
389 | padding: 0; /* 2 */
390 | }
391 |
392 | /**
393 | * Remove default vertical scrollbar in IE 8/9/10/11.
394 | */
395 |
396 | textarea {
397 | overflow: auto;
398 | }
399 |
400 | /**
401 | * Don't inherit the `font-weight` (applied by a rule above).
402 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
403 | */
404 |
405 | optgroup {
406 | font-weight: bold;
407 | }
408 |
409 | /* Tables
410 | ========================================================================== */
411 |
412 | /**
413 | * Remove most spacing between table cells.
414 | */
415 |
416 | table {
417 | border-collapse: collapse;
418 | border-spacing: 0;
419 | }
420 |
421 | td,
422 | th {
423 | padding: 0;
424 | }
425 |
--------------------------------------------------------------------------------
/assets/scss/rouge-github.scss:
--------------------------------------------------------------------------------
1 | .highlight table td { padding: 5px; }
2 | .highlight table pre { margin: 0; }
3 | .highlight .cm {
4 | color: #999988;
5 | font-style: italic;
6 | }
7 | .highlight .cp {
8 | color: #999999;
9 | font-weight: bold;
10 | }
11 | .highlight .c1 {
12 | color: #999988;
13 | font-style: italic;
14 | }
15 | .highlight .cs {
16 | color: #999999;
17 | font-weight: bold;
18 | font-style: italic;
19 | }
20 | .highlight .c, .highlight .cd {
21 | color: #999988;
22 | font-style: italic;
23 | }
24 | .highlight .err {
25 | color: #a61717;
26 | background-color: #e3d2d2;
27 | }
28 | .highlight .gd {
29 | color: #000000;
30 | background-color: #ffdddd;
31 | }
32 | .highlight .ge {
33 | color: #000000;
34 | font-style: italic;
35 | }
36 | .highlight .gr {
37 | color: #aa0000;
38 | }
39 | .highlight .gh {
40 | color: #999999;
41 | }
42 | .highlight .gi {
43 | color: #000000;
44 | background-color: #ddffdd;
45 | }
46 | .highlight .go {
47 | color: #888888;
48 | }
49 | .highlight .gp {
50 | color: #555555;
51 | }
52 | .highlight .gs {
53 | font-weight: bold;
54 | }
55 | .highlight .gu {
56 | color: #aaaaaa;
57 | }
58 | .highlight .gt {
59 | color: #aa0000;
60 | }
61 | .highlight .kc {
62 | color: #000000;
63 | font-weight: bold;
64 | }
65 | .highlight .kd {
66 | color: #000000;
67 | font-weight: bold;
68 | }
69 | .highlight .kn {
70 | color: #000000;
71 | font-weight: bold;
72 | }
73 | .highlight .kp {
74 | color: #000000;
75 | font-weight: bold;
76 | }
77 | .highlight .kr {
78 | color: #000000;
79 | font-weight: bold;
80 | }
81 | .highlight .kt {
82 | color: #445588;
83 | font-weight: bold;
84 | }
85 | .highlight .k, .highlight .kv {
86 | color: #000000;
87 | font-weight: bold;
88 | }
89 | .highlight .mf {
90 | color: #009999;
91 | }
92 | .highlight .mh {
93 | color: #009999;
94 | }
95 | .highlight .il {
96 | color: #009999;
97 | }
98 | .highlight .mi {
99 | color: #009999;
100 | }
101 | .highlight .mo {
102 | color: #009999;
103 | }
104 | .highlight .m, .highlight .mb, .highlight .mx {
105 | color: #009999;
106 | }
107 | .highlight .sb {
108 | color: #d14;
109 | }
110 | .highlight .sc {
111 | color: #d14;
112 | }
113 | .highlight .sd {
114 | color: #d14;
115 | }
116 | .highlight .s2 {
117 | color: #d14;
118 | }
119 | .highlight .se {
120 | color: #d14;
121 | }
122 | .highlight .sh {
123 | color: #d14;
124 | }
125 | .highlight .si {
126 | color: #d14;
127 | }
128 | .highlight .sx {
129 | color: #d14;
130 | }
131 | .highlight .sr {
132 | color: #009926;
133 | }
134 | .highlight .s1 {
135 | color: #d14;
136 | }
137 | .highlight .ss {
138 | color: #990073;
139 | }
140 | .highlight .s {
141 | color: #d14;
142 | }
143 | .highlight .na {
144 | color: #008080;
145 | }
146 | .highlight .bp {
147 | color: #999999;
148 | }
149 | .highlight .nb {
150 | color: #0086B3;
151 | }
152 | .highlight .nc {
153 | color: #445588;
154 | font-weight: bold;
155 | }
156 | .highlight .no {
157 | color: #008080;
158 | }
159 | .highlight .nd {
160 | color: #3c5d5d;
161 | font-weight: bold;
162 | }
163 | .highlight .ni {
164 | color: #800080;
165 | }
166 | .highlight .ne {
167 | color: #990000;
168 | font-weight: bold;
169 | }
170 | .highlight .nf {
171 | color: #990000;
172 | font-weight: bold;
173 | }
174 | .highlight .nl {
175 | color: #990000;
176 | font-weight: bold;
177 | }
178 | .highlight .nn {
179 | color: #555555;
180 | }
181 | .highlight .nt {
182 | color: #000080;
183 | }
184 | .highlight .vc {
185 | color: #008080;
186 | }
187 | .highlight .vg {
188 | color: #008080;
189 | }
190 | .highlight .vi {
191 | color: #008080;
192 | }
193 | .highlight .nv {
194 | color: #008080;
195 | }
196 | .highlight .ow {
197 | color: #000000;
198 | font-weight: bold;
199 | }
200 | .highlight .o {
201 | color: #000000;
202 | font-weight: bold;
203 | }
204 | .highlight .w {
205 | color: #bbbbbb;
206 | }
207 | .highlight {
208 | background-color: #f8f8f8;
209 | }
210 |
--------------------------------------------------------------------------------
/assets/scss/variables.scss:
--------------------------------------------------------------------------------
1 | // Breakpoints
2 | $large-breakpoint: 64em !default;
3 | $medium-breakpoint: 42em !default;
4 |
5 | // Headers
6 | $header-heading-color: #fff !default;
7 | $header-bg-color: #159957 !default;
8 | $header-bg-color-secondary: #155799 !default;
9 |
10 | // Text
11 | $section-headings-color: #159957 !default;
12 | $body-text-color: #606c71 !default;
13 | $body-link-color: #1e6bb8 !default;
14 | $blockquote-text-color: #819198 !default;
15 |
16 | // Code
17 | $code-bg-color: #f3f6fa !default;
18 | $code-text-color: #567482 !default;
19 |
20 | // Borders
21 | $border-color: #dce6f0 !default;
22 | $table-border-color: #e9ebec !default;
23 | $hr-border-color: #eff0f1 !default;
24 |
--------------------------------------------------------------------------------
/bin/console:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | load(__DIR__.'/../.env');
23 | }
24 |
25 | $input = new ArgvInput();
26 | $env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev');
27 | $debug = ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption(['--no-debug', '']);
28 |
29 | if ($debug) {
30 | umask(0000);
31 |
32 | if (class_exists(Debug::class)) {
33 | Debug::enable();
34 | }
35 | }
36 |
37 | $kernel = new Kernel($env, $debug);
38 | $application = new Application($kernel);
39 | $application->run($input);
40 |
--------------------------------------------------------------------------------
/bin/update.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ## BUILD REF FILES
4 |
5 | # 3.4
6 | echo "Updating 3.4 dependencies..."
7 | mv composer.json composer-current.json
8 | mv composer-3.4.json composer.json
9 | rm -rf vendor && rm composer.lock
10 | composer update
11 | echo "Building 3.4 docs..."
12 | ./bin/console app:build
13 | echo "Done."
14 |
15 | # 4.3
16 | echo "Updating 4.3 dependencies..."
17 | mv composer.json composer-3.4.json
18 | mv composer-4.3.json composer.json
19 | rm -rf vendor && rm composer.lock
20 | composer update
21 | echo "Building 4.3 docs..."
22 | ./bin/console app:build
23 | echo "Done."
24 |
25 | # 4.4
26 | echo "Updating 4.4 dependencies..."
27 | mv composer.json composer-4.3.json
28 | mv composer-4.4.json composer.json
29 | rm -rf vendor && rm composer.lock
30 | composer update
31 | echo "Building 4.4 docs..."
32 | ./bin/console app:build
33 | echo "Done."
34 |
35 | # 5.0
36 | echo "Updating 5.0 dependencies..."
37 | mv composer.json composer-4.4.json
38 | mv composer-5.0.json composer.json
39 | rm -rf vendor && rm composer.lock
40 | composer update
41 | echo "Building 5.0 docs..."
42 | ./bin/console app:build
43 | echo "Done."
44 |
45 | # master
46 | echo "Updating MASTER dependencies..."
47 | mv composer.json composer-5.0.json
48 | mv composer-master.json composer.json
49 | rm -rf vendor && rm composer.lock
50 | composer update
51 | echo "Building MASTER docs..."
52 | ./bin/console app:build
53 | echo "Done."
54 |
55 | # current
56 | echo "Updating CURRENT dependencies..."
57 | mv composer.json composer-master.json
58 | mv composer-current.json composer.json
59 | rm -rf vendor && rm composer.lock
60 | composer update
61 | echo "Building CURRENT docs..."
62 | ./bin/console app:build
63 | echo "Done."
64 |
65 | git status
66 |
--------------------------------------------------------------------------------
/composer-3.4.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^1.10",
12 | "doctrine/orm": "^2.6",
13 | "symfony/console": "3.4.*",
14 | "symfony/doctrine-bridge": "3.4.*",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "3.4.*",
17 | "symfony/framework-bundle": "3.4.*",
18 | "symfony/http-foundation": "3.4.*",
19 | "symfony/http-kernel": "3.4.*",
20 | "symfony/intl": "3.4.*",
21 | "symfony/options-resolver": "3.4.*",
22 | "symfony/process": "3.4.*",
23 | "symfony/property-access": "3.4.*",
24 | "symfony/security-core": "3.4.*",
25 | "symfony/security-csrf": "3.4.*",
26 | "symfony/translation": "3.4.*",
27 | "symfony/validator": "3.4.*",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "3.4.*"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "3.4.*",
33 | "symfony/var-dumper": "3.4.*"
34 | },
35 | "config": {
36 | "preferred-install": {
37 | "*": "dist"
38 | },
39 | "sort-packages": true
40 | },
41 | "autoload": {
42 | "psr-4": {
43 | "App\\": "src/"
44 | }
45 | },
46 | "autoload-dev": {
47 | "psr-4": {
48 | "App\\Tests\\": "tests/"
49 | }
50 | },
51 | "replace": {
52 | "paragonie/random_compat": "2.*",
53 | "symfony/polyfill-ctype": "*",
54 | "symfony/polyfill-iconv": "*",
55 | "symfony/polyfill-php70": "*",
56 | "symfony/polyfill-php56": "*"
57 | },
58 | "scripts": {
59 | "auto-scripts": {
60 | "cache:clear": "symfony-cmd"
61 | },
62 | "post-install-cmd": [
63 | "@auto-scripts"
64 | ],
65 | "post-update-cmd": [
66 | "@auto-scripts"
67 | ]
68 | },
69 | "conflict": {
70 | "symfony/symfony": "*"
71 | },
72 | "extra": {
73 | "symfony": {
74 | "allow-contrib": false
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/composer-4.3.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^1.10",
12 | "doctrine/orm": "^2.6",
13 | "symfony/console": "4.3.*",
14 | "symfony/doctrine-bridge": "4.3.*",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "4.3.*",
17 | "symfony/framework-bundle": "4.3.*",
18 | "symfony/http-foundation": "4.3.*",
19 | "symfony/http-kernel": "4.3.*",
20 | "symfony/intl": "4.3.*",
21 | "symfony/options-resolver": "4.3.*",
22 | "symfony/process": "4.3.*",
23 | "symfony/property-access": "4.3.*",
24 | "symfony/security-core": "4.3.*",
25 | "symfony/security-csrf": "4.3.*",
26 | "symfony/translation": "4.3.*",
27 | "symfony/validator": "4.3.*",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "4.3.*"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "4.3.*",
33 | "symfony/var-dumper": "4.3.*"
34 | },
35 | "config": {
36 | "preferred-install": {
37 | "*": "dist"
38 | },
39 | "sort-packages": true
40 | },
41 | "autoload": {
42 | "psr-4": {
43 | "App\\": "src/"
44 | }
45 | },
46 | "autoload-dev": {
47 | "psr-4": {
48 | "App\\Tests\\": "tests/"
49 | }
50 | },
51 | "replace": {
52 | "paragonie/random_compat": "2.*",
53 | "symfony/polyfill-ctype": "*",
54 | "symfony/polyfill-iconv": "*",
55 | "symfony/polyfill-php71": "*",
56 | "symfony/polyfill-php70": "*",
57 | "symfony/polyfill-php56": "*"
58 | },
59 | "scripts": {
60 | "auto-scripts": {
61 | "cache:clear": "symfony-cmd"
62 | },
63 | "post-install-cmd": [
64 | "@auto-scripts"
65 | ],
66 | "post-update-cmd": [
67 | "@auto-scripts"
68 | ]
69 | },
70 | "conflict": {
71 | "symfony/symfony": "*"
72 | },
73 | "extra": {
74 | "symfony": {
75 | "allow-contrib": false
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/composer-4.4.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^1.10",
12 | "doctrine/orm": "^2.6",
13 | "symfony/console": "4.4.*",
14 | "symfony/doctrine-bridge": "4.4.*",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "4.4.*",
17 | "symfony/framework-bundle": "4.4.*",
18 | "symfony/http-foundation": "4.4.*",
19 | "symfony/http-kernel": "4.4.*",
20 | "symfony/intl": "4.4.*",
21 | "symfony/options-resolver": "4.4.*",
22 | "symfony/process": "4.4.*",
23 | "symfony/property-access": "4.4.*",
24 | "symfony/security-core": "4.4.*",
25 | "symfony/security-csrf": "4.4.*",
26 | "symfony/translation": "4.4.*",
27 | "symfony/validator": "4.4.*",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "4.4.*"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "4.4.*",
33 | "symfony/var-dumper": "4.4.*"
34 | },
35 | "config": {
36 | "preferred-install": {
37 | "*": "dist"
38 | },
39 | "sort-packages": true
40 | },
41 | "autoload": {
42 | "psr-4": {
43 | "App\\": "src/"
44 | }
45 | },
46 | "autoload-dev": {
47 | "psr-4": {
48 | "App\\Tests\\": "tests/"
49 | }
50 | },
51 | "replace": {
52 | "paragonie/random_compat": "2.*",
53 | "symfony/polyfill-ctype": "*",
54 | "symfony/polyfill-iconv": "*",
55 | "symfony/polyfill-php71": "*",
56 | "symfony/polyfill-php70": "*",
57 | "symfony/polyfill-php56": "*"
58 | },
59 | "scripts": {
60 | "auto-scripts": {
61 | "cache:clear": "symfony-cmd"
62 | },
63 | "post-install-cmd": [
64 | "@auto-scripts"
65 | ],
66 | "post-update-cmd": [
67 | "@auto-scripts"
68 | ]
69 | },
70 | "conflict": {
71 | "symfony/symfony": "*"
72 | },
73 | "extra": {
74 | "symfony": {
75 | "allow-contrib": false
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/composer-5.0.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^2.0",
12 | "doctrine/orm": "^2.7",
13 | "symfony/console": "5.0.*",
14 | "symfony/doctrine-bridge": "5.0.*",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "5.0.*",
17 | "symfony/framework-bundle": "5.0.*",
18 | "symfony/http-foundation": "5.0.*",
19 | "symfony/http-kernel": "5.0.*",
20 | "symfony/intl": "5.0.*",
21 | "symfony/options-resolver": "5.0.*",
22 | "symfony/process": "5.0.*",
23 | "symfony/property-access": "5.0.*",
24 | "symfony/security-core": "5.0.*",
25 | "symfony/security-csrf": "5.0.*",
26 | "symfony/translation": "5.0.*",
27 | "symfony/validator": "5.0.*",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "5.0.*"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "5.0.*",
33 | "symfony/var-dumper": "5.0.*"
34 | },
35 | "config": {
36 | "preferred-install": {
37 | "*": "dist"
38 | },
39 | "sort-packages": true
40 | },
41 | "autoload": {
42 | "psr-4": {
43 | "App\\": "src/"
44 | }
45 | },
46 | "autoload-dev": {
47 | "psr-4": {
48 | "App\\Tests\\": "tests/"
49 | }
50 | },
51 | "replace": {
52 | "paragonie/random_compat": "2.*",
53 | "symfony/polyfill-ctype": "*",
54 | "symfony/polyfill-iconv": "*",
55 | "symfony/polyfill-php71": "*",
56 | "symfony/polyfill-php70": "*",
57 | "symfony/polyfill-php56": "*"
58 | },
59 | "scripts": {
60 | "auto-scripts": {
61 | "cache:clear": "symfony-cmd"
62 | },
63 | "post-install-cmd": [
64 | "@auto-scripts"
65 | ],
66 | "post-update-cmd": [
67 | "@auto-scripts"
68 | ]
69 | },
70 | "conflict": {
71 | "symfony/symfony": "*"
72 | },
73 | "extra": {
74 | "symfony": {
75 | "allow-contrib": false
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/composer-master.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^1.10",
12 | "doctrine/orm": "^2.6",
13 | "symfony/console": "4.4.*",
14 | "symfony/doctrine-bridge": "4.4.*",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "4.4.*",
17 | "symfony/framework-bundle": "4.4.*",
18 | "symfony/http-foundation": "4.4.*",
19 | "symfony/http-kernel": "4.4.*",
20 | "symfony/intl": "4.4.*",
21 | "symfony/options-resolver": "4.4.*",
22 | "symfony/process": "4.4.*",
23 | "symfony/property-access": "4.4.*",
24 | "symfony/security-core": "4.4.*",
25 | "symfony/security-csrf": "4.4.*",
26 | "symfony/translation": "4.4.*",
27 | "symfony/validator": "4.4.*",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "4.4.*"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "4.4.*",
33 | "symfony/var-dumper": "4.4.*"
34 | },
35 | "minimum-stability": "dev",
36 | "config": {
37 | "preferred-install": {
38 | "*": "dist"
39 | },
40 | "sort-packages": true
41 | },
42 | "autoload": {
43 | "psr-4": {
44 | "App\\": "src/"
45 | }
46 | },
47 | "autoload-dev": {
48 | "psr-4": {
49 | "App\\Tests\\": "tests/"
50 | }
51 | },
52 | "replace": {
53 | "paragonie/random_compat": "2.*",
54 | "symfony/polyfill-ctype": "*",
55 | "symfony/polyfill-iconv": "*",
56 | "symfony/polyfill-php70": "*",
57 | "symfony/polyfill-php56": "*"
58 | },
59 | "scripts": {
60 | "auto-scripts": {
61 | "cache:clear": "symfony-cmd"
62 | },
63 | "post-install-cmd": [
64 | "@auto-scripts"
65 | ],
66 | "post-update-cmd": [
67 | "@auto-scripts"
68 | ]
69 | },
70 | "conflict": {
71 | "symfony/symfony": "*"
72 | },
73 | "extra": {
74 | "symfony": {
75 | "allow-contrib": false
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phptopup/symfony-form",
3 | "description": "Symfony Form reference generator",
4 | "type": "project",
5 | "license": "MIT",
6 | "require": {
7 | "php": "^7.1.3",
8 | "ext-ctype": "*",
9 | "ext-iconv": "*",
10 | "ext-json": "*",
11 | "doctrine/doctrine-bundle": "^2.0",
12 | "doctrine/orm": "^2.7",
13 | "symfony/console": "^5.0",
14 | "symfony/doctrine-bridge": "^5.0",
15 | "symfony/flex": "^1.1",
16 | "symfony/form": "^5.0",
17 | "symfony/framework-bundle": "^5.0",
18 | "symfony/http-foundation": "^5.0",
19 | "symfony/http-kernel": "^5.0",
20 | "symfony/intl": "^5.0",
21 | "symfony/options-resolver": "^5.0",
22 | "symfony/process": "^5.0",
23 | "symfony/property-access": "^5.0",
24 | "symfony/security-core": "^5.0",
25 | "symfony/security-csrf": "^5.0",
26 | "symfony/translation": "^5.0",
27 | "symfony/validator": "^5.0",
28 | "symfony/webpack-encore-pack": "^1.0",
29 | "symfony/yaml": "^5.0"
30 | },
31 | "require-dev": {
32 | "symfony/dotenv": "^5.0",
33 | "symfony/var-dumper": "^5.0"
34 | },
35 | "minimum-stability": "dev",
36 | "config": {
37 | "preferred-install": {
38 | "*": "dist"
39 | },
40 | "sort-packages": true
41 | },
42 | "autoload": {
43 | "psr-4": {
44 | "App\\": "src/"
45 | }
46 | },
47 | "autoload-dev": {
48 | "psr-4": {
49 | "App\\Tests\\": "tests/"
50 | }
51 | },
52 | "replace": {
53 | "paragonie/random_compat": "2.*",
54 | "symfony/polyfill-ctype": "*",
55 | "symfony/polyfill-iconv": "*",
56 | "symfony/polyfill-php71": "*",
57 | "symfony/polyfill-php70": "*",
58 | "symfony/polyfill-php56": "*"
59 | },
60 | "scripts": {
61 | "auto-scripts": {
62 | "cache:clear": "symfony-cmd"
63 | },
64 | "post-install-cmd": [
65 | "@auto-scripts"
66 | ],
67 | "post-update-cmd": [
68 | "@auto-scripts"
69 | ]
70 | },
71 | "conflict": {
72 | "symfony/symfony": "*"
73 | },
74 | "extra": {
75 | "symfony": {
76 | "allow-contrib": false
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/config/bundles.php:
--------------------------------------------------------------------------------
1 | ['all' => true],
5 | Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
6 | Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true],
7 | ];
8 |
--------------------------------------------------------------------------------
/config/packages/dev/routing.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | router:
3 | strict_requirements: true
4 |
--------------------------------------------------------------------------------
/config/packages/doctrine.yaml:
--------------------------------------------------------------------------------
1 | doctrine:
2 | dbal:
3 | url: '%env(resolve:DATABASE_URL)%'
4 | orm:
5 | auto_generate_proxy_classes: '%kernel.debug%'
6 | naming_strategy: doctrine.orm.naming_strategy.underscore
7 | auto_mapping: true
8 | mappings:
9 | App:
10 | is_bundle: false
11 | type: annotation
12 | dir: '%kernel.project_dir%/src/Entity'
13 | prefix: 'App\Entity'
14 | alias: App
15 |
--------------------------------------------------------------------------------
/config/packages/framework.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | secret: '%env(APP_SECRET)%'
3 | #default_locale: en
4 | #csrf_protection: ~
5 | #http_method_override: true
6 |
7 | # Enables session support. Note that the session will ONLY be started if you read or write from it.
8 | # Remove or comment this section to explicitly disable session support.
9 | session:
10 | handler_id: ~
11 |
12 | #esi: ~
13 | #fragments: ~
14 | php_errors:
15 | log: true
16 |
17 | cache:
18 | # Put the unique name of your app here: the prefix seed
19 | # is used to compute stable namespaces for cache keys.
20 | #prefix_seed: your_vendor_name/app_name
21 |
22 | # The app cache caches to the filesystem by default.
23 | # Other options include:
24 |
25 | # Redis
26 | #app: cache.adapter.redis
27 | #default_redis_provider: redis://localhost
28 |
29 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
30 | #app: cache.adapter.apcu
31 |
--------------------------------------------------------------------------------
/config/packages/prod/doctrine.yaml:
--------------------------------------------------------------------------------
1 | doctrine:
2 | orm:
3 | metadata_cache_driver:
4 | type: service
5 | id: doctrine.system_cache_provider
6 | query_cache_driver:
7 | type: service
8 | id: doctrine.system_cache_provider
9 | result_cache_driver:
10 | type: service
11 | id: doctrine.result_cache_provider
12 |
13 | services:
14 | doctrine.result_cache_provider:
15 | class: Symfony\Component\Cache\DoctrineProvider
16 | public: false
17 | arguments:
18 | - '@doctrine.result_cache_pool'
19 | doctrine.system_cache_provider:
20 | class: Symfony\Component\Cache\DoctrineProvider
21 | public: false
22 | arguments:
23 | - '@doctrine.system_cache_pool'
24 |
25 | framework:
26 | cache:
27 | pools:
28 | doctrine.result_cache_pool:
29 | adapter: cache.app
30 | doctrine.system_cache_pool:
31 | adapter: cache.system
32 |
--------------------------------------------------------------------------------
/config/packages/routing.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | router:
3 | strict_requirements: ~
4 |
--------------------------------------------------------------------------------
/config/packages/test/framework.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | test: ~
3 | session:
4 | storage_id: session.storage.mock_file
5 |
--------------------------------------------------------------------------------
/config/packages/translation.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | default_locale: '%locale%'
3 | translator:
4 | default_path: '%kernel.project_dir%/translations'
5 | fallbacks:
6 | - '%locale%'
7 |
--------------------------------------------------------------------------------
/config/routes.yaml:
--------------------------------------------------------------------------------
1 | #index:
2 | # path: /
3 | # controller: App\Controller\DefaultController::index
4 |
--------------------------------------------------------------------------------
/config/routes/annotations.yaml:
--------------------------------------------------------------------------------
1 | #controllers:
2 | # resource: ../../src/Controller/
3 | # type: annotation
4 |
--------------------------------------------------------------------------------
/config/services.yaml:
--------------------------------------------------------------------------------
1 | # Put parameters here that don't need to change on each machine where the app is deployed
2 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
3 | parameters:
4 | locale: 'en'
5 |
6 | services:
7 | # default configuration for services in *this* file
8 | _defaults:
9 | autowire: true # Automatically injects dependencies in your services.
10 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
11 | public: false # Allows optimizing the container by removing unused services; this also means
12 | # fetching services directly from the container via $container->get() won't work.
13 | # The best practice is to be explicit about your dependencies anyway.
14 |
15 | # makes classes in src/ available to be used as services
16 | # this creates a service per class whose id is the fully-qualified class name
17 | App\:
18 | resource: '../src/*'
19 | exclude: '../src/{Entity,Tests,Kernel.php}'
20 |
21 | # add more service definitions when explicit configuration is needed
22 | # please note that last definitions always *replace* previous ones
23 |
--------------------------------------------------------------------------------
/docs/build/css/app.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .c,.highlight .cd{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#000;font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .k,.highlight .kv{color:#000;font-weight:700}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .mx{color:#099}.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .bp{color:#999}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:700}.highlight .ni{color:purple}.highlight .ne,.highlight .nf,.highlight .nl{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:teal}.highlight .o,.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight{background-color:#f8f8f8}*{box-sizing:border-box}body{padding:0;margin:0;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;color:#606c71}a{color:#1e6bb8;text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-block;margin-bottom:1rem;color:hsla(0,0%,100%,.7);background-color:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.2);border-radius:.3rem;transition:color .2s,background-color .2s,border-color .2s}.btn:hover{color:hsla(0,0%,100%,.8);text-decoration:none;background-color:hsla(0,0%,100%,.2);border-color:hsla(0,0%,100%,.3)}.btn+.btn{margin-left:1rem}@media screen and (min-width:64em){.btn{padding:.75rem 1rem}}@media screen and (min-width:42em) and (max-width:64em){.btn{padding:.6rem .9rem;font-size:.9rem}}@media screen and (max-width:42em){.btn{display:block;width:100%;padding:.75rem;font-size:.9rem}.btn+.btn{margin-top:1rem;margin-left:0}}.page-header{color:#fff;text-align:center;background-color:#159957;background-image:linear-gradient(120deg,#155799,#159957)}@media screen and (min-width:64em){.page-header{padding:4rem 6rem}}@media screen and (min-width:42em) and (max-width:64em){.page-header{padding:3rem 4rem}}@media screen and (max-width:42em){.page-header{padding:2rem 1rem}}.project-name{margin-top:0;margin-bottom:.1rem}@media screen and (min-width:64em){.project-name{font-size:3.25rem}}@media screen and (min-width:42em) and (max-width:64em){.project-name{font-size:2.25rem}}@media screen and (max-width:42em){.project-name{font-size:1.75rem}}.project-tagline{margin-bottom:2rem;font-weight:400;opacity:.7}@media screen and (min-width:64em){.project-tagline{font-size:1.25rem}}@media screen and (min-width:42em) and (max-width:64em){.project-tagline{font-size:1.15rem}}@media screen and (max-width:42em){.project-tagline{font-size:1rem}}.main-content{word-wrap:break-word}.main-content :first-child{margin-top:0}@media screen and (min-width:64em){.main-content{max-width:81rem;padding:2rem 6rem;margin:0 auto;font-size:1.1rem}}@media screen and (min-width:42em) and (max-width:64em){.main-content{padding:2rem 4rem;font-size:1.1rem}}@media screen and (max-width:42em){.main-content{padding:2rem 1rem;font-size:1rem}}.main-content img{max-width:100%}.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6{margin-top:2rem;margin-bottom:1rem;font-weight:400;color:#159957}.main-content p{margin-bottom:1em}.main-content code{padding:2px 4px;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9rem;border-radius:.3rem}.main-content code,.main-content pre{color:#567482;background-color:#f3f6fa}.main-content pre{padding:.8rem;margin-top:0;margin-bottom:1rem;font:1rem Consolas,Liberation Mono,Menlo,Courier,monospace;word-wrap:normal;border:1px solid #dce6f0;border-radius:.3rem}.main-content pre>code{padding:0;margin:0;font-size:.9rem;color:#567482;word-break:normal;white-space:pre;background:transparent;border:0}.main-content .highlight{margin-bottom:1rem}.main-content .highlight pre{margin-bottom:0;word-break:normal}.main-content .highlight pre,.main-content pre{padding:.8rem;overflow:auto;font-size:.9rem;line-height:1.45;border-radius:.3rem;-webkit-overflow-scrolling:touch}.main-content pre code,.main-content pre tt{display:inline;max-width:none;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.main-content pre code:after,.main-content pre code:before,.main-content pre tt:after,.main-content pre tt:before{content:normal}.main-content ol,.main-content ul{margin-top:0}.main-content blockquote{padding:0 1rem;margin-left:0;color:#819198;border-left:.3rem solid #dce6f0}.main-content blockquote>:first-child{margin-top:0}.main-content blockquote>:last-child{margin-bottom:0}.main-content table{width:100%;overflow:auto;word-break:normal;word-break:keep-all;-webkit-overflow-scrolling:touch}.main-content table caption{border-bottom:none!important}.main-content table caption,.main-content table th{font-weight:400;text-align:left;background-color:#f3f6fa}.main-content table caption,.main-content table td,.main-content table th{padding:.5rem 1rem;border:1px solid #e9ebec;vertical-align:top}.main-content dl{padding:0}.main-content dl dt{padding:0;margin-top:1rem;font-size:1rem;font-weight:700}.main-content dl dd{padding:0;margin-bottom:1rem}.main-content hr{height:2px;padding:0;margin:1rem 0;background-color:#eff0f1;border:0}.site-footer{padding-top:2rem;margin-top:2rem;border-top:1px solid #eff0f1}@media screen and (min-width:64em){.site-footer{font-size:1rem}}@media screen and (min-width:42em) and (max-width:64em){.site-footer{font-size:1rem}}@media screen and (max-width:42em){.site-footer{font-size:.9rem}}.site-footer-owner{display:block;font-weight:700}.site-footer-credits{color:#819198}ol>li,ul>li{margin-bottom:.5rem}h3{margin-top:3rem!important;color:#1e6bb8!important;font-weight:700}.composer-info-container>.composer-info-label{text-decoration:#fff underline}.composer-info-container>.composer-info{display:none}.composer-info-container>.composer-info>pre{margin-top:-.1rem;padding-top:1.1rem}.composer-info-container:hover>.composer-info{display:block}.required{font-weight:700}.option-div>.option-link{position:absolute;margin-left:-16px;opacity:0}.option-div:hover>.option-link{opacity:1}.option-group{font-size:1rem;margin-top:1rem;margin-bottom:.4rem;border-bottom:1px solid #e9ebec}.option-definition,.option-group{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace}.option-definition{color:#f3f6fa;background-color:#567482;border-radius:0 0 .3rem .3rem;margin-top:-1px;font-size:.8rem;padding:.7rem 1rem;position:absolute;max-width:450px;min-width:240px;z-index:1}code.deprecated{text-decoration-line:line-through}.selected code{color:#f3f6fa;background-color:#435c67;border-radius:.3rem .3rem 0 0}.selected ul>li{margin-bottom:0}.mr-0-5{margin-right:.5rem!important}.mt-2{margin-top:2rem!important}.mt-3{margin-top:3rem!important}.no-margin{margin:0!important}.float-left{float:left!important}.build-info-container{background-color:#567482}.build-info-container>.build-info{font-size:.8rem;color:#fff}@media screen and (min-width:64em){.build-info-container>.build-info{max-width:81rem;padding:3rem 6rem;margin:0 auto}}@media screen and (min-width:42em) and (max-width:64em){.build-info-container>.build-info{padding:2rem 4rem}}@media screen and (max-width:42em){.build-info-container>.build-info{padding:2rem 1rem}}.sf-doc-versions-container code{font-size:16px;color:#156d84;background-color:#eee;margin-right:5px;padding:2px 7px 1px;cursor:pointer}.sf-doc-versions-container code.selected{color:#eee;background-color:#156d84}
--------------------------------------------------------------------------------
/docs/build/js/app.js:
--------------------------------------------------------------------------------
1 | !function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s="b4kQ")}({"/OLF":function(e,t,n){"use strict";function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;rthis.eventPool.length&&this.eventPool.push(e)}function V(e){e.eventPool=[],e.getPooled=j,e.release=z}function B(e,t,n,r){return H.call(this,e,t,n,r)}function K(e,t,n,r){return H.call(this,e,t,n,r)}function W(e,t){switch(e){case"topKeyUp":return-1!==dr.indexOf(t.keyCode);case"topKeyDown":return 229!==t.keyCode;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function q(e){return e=e.detail,"object"==typeof e&&"data"in e?e.data:null}function Q(e,t){switch(e){case"topCompositionEnd":return q(t);case"topKeyPress":return 32!==t.which?null:(wr=!0,kr);case"topTextInput":return e=t.data,e===kr&&wr?null:e;default:return null}}function $(e,t){if(xr)return"topCompositionEnd"===e||!mr&&W(e,t)?(e=L(),cr._root=null,cr._startText=null,cr._fallbackText=null,xr=!1,e):null;switch(e){case"topPaste":return null;case"topKeyPress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1Vr.length&&Vr.push(e)}}}function De(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function Me(e){if(Qr[e])return Qr[e];if(!qr[e])return e;var t,n=qr[e];for(t in n)if(n.hasOwnProperty(t)&&t in $r)return Qr[e]=n[t];return""}function Fe(e){return Object.prototype.hasOwnProperty.call(e,Xr)||(e[Xr]=Jr++,Yr[e[Xr]]={}),Yr[e[Xr]]}function Ae(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Le(e,t){var n=Ae(e);e=0;for(var r;n;){if(3===n.nodeType){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ae(n)}}function Ue(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&"text"===e.type||"textarea"===t||"true"===e.contentEditable)}function He(e,t){if(oo||null==to||to!==xn())return null;var n=to;return"selectionStart"in n&&Ue(n)?n={start:n.selectionStart,end:n.selectionEnd}:window.getSelection?(n=window.getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}):n=void 0,ro&&Tn(ro,n)?null:(ro=n,e=H.getPooled(eo.select,no,e,t),e.type="select",e.target=to,M(e),e)}function je(e,t,n,r){return H.call(this,e,t,n,r)}function ze(e,t,n,r){return H.call(this,e,t,n,r)}function Ve(e,t,n,r){return H.call(this,e,t,n,r)}function Be(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,32<=e||13===e?e:0}function Ke(e,t,n,r){return H.call(this,e,t,n,r)}function We(e,t,n,r){return H.call(this,e,t,n,r)}function qe(e,t,n,r){return H.call(this,e,t,n,r)}function Qe(e,t,n,r){return H.call(this,e,t,n,r)}function $e(e,t,n,r){return H.call(this,e,t,n,r)}function Ge(e){0>fo||(e.current=po[fo],po[fo]=null,fo--)}function Ye(e,t){fo++,po[fo]=e.current,e.current=t}function Je(e){return Ze(e)?yo:mo.current}function Xe(e,t){var n=e.type.contextTypes;if(!n)return On;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Ze(e){return 2===e.tag&&null!=e.type.childContextTypes}function et(e){Ze(e)&&(Ge(ho,e),Ge(mo,e))}function tt(e,t,n){null!=mo.cursor&&r("168"),Ye(mo,t,e),Ye(ho,n,e)}function nt(e,t){var n=e.stateNode,o=e.type.childContextTypes;if("function"!=typeof n.getChildContext)return t;n=n.getChildContext();for(var a in n)a in o||r("108",ke(e)||"Unknown",a);return kn({},t,n)}function rt(e){if(!Ze(e))return!1;var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||On,yo=mo.current,Ye(mo,t,e),Ye(ho,ho.current,e),!0}function ot(e,t){var n=e.stateNode;if(n||r("169"),t){var o=nt(e,yo);n.__reactInternalMemoizedMergedChildContext=o,Ge(ho,e),Ge(mo,e),Ye(mo,o,e)}else Ge(ho,e);Ye(ho,t,e)}function at(e,t,n){this.tag=e,this.key=t,this.stateNode=this.type=null,this.sibling=this.child=this.return=null,this.index=0,this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null,this.internalContextTag=n,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.expirationTime=0,this.alternate=null}function lt(e,t,n){var r=e.alternate;return null===r?(r=new at(e.tag,e.key,e.internalContextTag),r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.effectTag=0,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null),r.expirationTime=n,r.pendingProps=t,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function it(e,t,n){var o=void 0,a=e.type,l=e.key;return"function"==typeof a?(o=a.prototype&&a.prototype.isReactComponent?new at(2,l,t):new at(0,l,t),o.type=a,o.pendingProps=e.props):"string"==typeof a?(o=new at(5,l,t),o.type=a,o.pendingProps=e.props):"object"==typeof a&&null!==a&&"number"==typeof a.tag?(o=a,o.pendingProps=e.props):r("130",null==a?a:typeof a,""),o.expirationTime=n,o}function ut(e,t,n,r){return t=new at(10,r,t),t.pendingProps=e,t.expirationTime=n,t}function st(e,t,n){return t=new at(6,null,t),t.pendingProps=e,t.expirationTime=n,t}function ct(e,t,n){return t=new at(7,e.key,t),t.type=e.handler,t.pendingProps=e,t.expirationTime=n,t}function pt(e,t,n){return e=new at(9,null,t),e.expirationTime=n,e}function ft(e,t,n){return t=new at(4,e.key,t),t.pendingProps=e.children||[],t.expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function dt(e){return function(t){try{return e(t)}catch(e){}}}function mt(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);go=dt(function(e){return t.onCommitFiberRoot(n,e)}),vo=dt(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}return!0}function ht(e){"function"==typeof go&&go(e)}function yt(e){"function"==typeof vo&&vo(e)}function gt(e){return{baseState:e,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function vt(e,t){null===e.last?e.first=e.last=t:(e.last.next=t,e.last=t),(0===e.expirationTime||e.expirationTime>t.expirationTime)&&(e.expirationTime=t.expirationTime)}function bt(e,t){var n=e.alternate,r=e.updateQueue;null===r&&(r=e.updateQueue=gt(null)),null!==n?null===(e=n.updateQueue)&&(e=n.updateQueue=gt(null)):e=null,e=e!==r?e:null,null===e?vt(r,t):null===r.last||null===e.last?(vt(r,t),vt(e,t)):(vt(r,t),e.last=t)}function Ct(e,t,n,r){return e=e.partialState,"function"==typeof e?e.call(t,n,r):e}function kt(e,t,n,r,o,a){null!==e&&e.updateQueue===n&&(n=t.updateQueue={baseState:n.baseState,expirationTime:n.expirationTime,first:n.first,last:n.last,isInitialized:n.isInitialized,callbackList:null,hasForceUpdate:!1}),n.expirationTime=0,n.isInitialized?e=n.baseState:(e=n.baseState=t.memoizedState,n.isInitialized=!0);for(var l=!0,i=n.first,u=!1;null!==i;){var s=i.expirationTime;if(s>a){var c=n.expirationTime;(0===c||c>s)&&(n.expirationTime=s),u||(u=!0,n.baseState=e)}else u||(n.first=i.next,null===n.first&&(n.last=null)),i.isReplace?(e=Ct(i,r,e,o),l=!0):(s=Ct(i,r,e,o))&&(e=l?kn({},e,s):kn(e,s),l=!1),i.isForced&&(n.hasForceUpdate=!0),null!==i.callback&&(s=n.callbackList,null===s&&(s=n.callbackList=[]),s.push(i));i=i.next}return null!==n.callbackList?t.effectTag|=32:null!==n.first||n.hasForceUpdate||(t.updateQueue=null),u||(n.baseState=e),e}function Et(e,t){var n=e.callbackList;if(null!==n)for(e.callbackList=null,e=0;ef?(d=p,p=null):d=p.sibling;var g=h(r,p,i[f],u);if(null===g){null===p&&(p=d);break}e&&p&&null===g.alternate&&t(r,p),a=l(g,a,f),null===c?s=g:c.sibling=g,c=g,p=d}if(f===i.length)return n(r,p),s;if(null===p){for(;fd?(g=f,f=null):g=f.sibling;var b=h(a,f,v.value,s);if(null===b){f||(f=g);break}e&&f&&null===b.alternate&&t(a,f),i=l(b,i,d),null===p?c=b:p.sibling=b,p=b,f=g}if(v.done)return n(a,f),c;if(null===f){for(;!v.done;d++,v=u.next())null!==(v=m(a,v.value,s))&&(i=l(v,i,d),null===p?c=v:p.sibling=v,p=v);return c}for(f=o(a,f);!v.done;d++,v=u.next())null!==(v=y(f,a,d,v.value,s))&&(e&&null!==v.alternate&&f.delete(null===v.key?d:v.key),i=l(v,i,d),null===p?c=v:p.sibling=v,p=v);return e&&f.forEach(function(e){return t(a,e)}),c}return function(e,o,l,u){"object"==typeof l&&null!==l&&l.type===xo&&null===l.key&&(l=l.props.children);var s="object"==typeof l&&null!==l;if(s)switch(l.$$typeof){case Co:e:{var c=l.key;for(s=o;null!==s;){if(s.key===c){if(10===s.tag?l.type===xo:s.type===l.type){n(e,s.sibling),o=a(s,l.type===xo?l.props.children:l.props,u),o.ref=Tt(s,l),o.return=e,e=o;break e}n(e,s);break}t(e,s),s=s.sibling}l.type===xo?(o=ut(l.props.children,e.internalContextTag,u,l.key),o.return=e,e=o):(u=it(l,e.internalContextTag,u),u.ref=Tt(o,l),u.return=e,e=u)}return i(e);case ko:e:{for(s=l.key;null!==o;){if(o.key===s){if(7===o.tag){n(e,o.sibling),o=a(o,l,u),o.return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}o=ct(l,e.internalContextTag,u),o.return=e,e=o}return i(e);case Eo:e:{if(null!==o){if(9===o.tag){n(e,o.sibling),o=a(o,null,u),o.type=l.value,o.return=e,e=o;break e}n(e,o)}o=pt(l,e.internalContextTag,u),o.type=l.value,o.return=e,e=o}return i(e);case wo:e:{for(s=l.key;null!==o;){if(o.key===s){if(4===o.tag&&o.stateNode.containerInfo===l.containerInfo&&o.stateNode.implementation===l.implementation){n(e,o.sibling),o=a(o,l.children||[],u),o.return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}o=ft(l,e.internalContextTag,u),o.return=e,e=o}return i(e)}if("string"==typeof l||"number"==typeof l)return l=""+l,null!==o&&6===o.tag?(n(e,o.sibling),o=a(o,l,u)):(n(e,o),o=st(l,e.internalContextTag,u)),o.return=e,e=o,i(e);if(_o(l))return g(e,o,l,u);if(xt(l))return v(e,o,l,u);if(s&&_t(e,l),void 0===l)switch(e.tag){case 2:case 1:u=e.type,r("152",u.displayName||u.name||"Component")}return n(e,o)}}function Ot(e,t,n,o,a){function l(e,t,n){var r=t.expirationTime;t.child=null===e?Oo(t,null,n,r):So(t,e.child,n,r)}function i(e,t){var n=t.ref;null===n||e&&e.ref===n||(t.effectTag|=128)}function u(e,t,n,r){if(i(e,t),!n)return r&&ot(t,!1),c(e,t);n=t.stateNode,zr.current=t;var o=n.render();return t.effectTag|=1,l(e,t,o),t.memoizedState=n.state,t.memoizedProps=n.props,r&&ot(t,!0),t.child}function s(e){var t=e.stateNode;t.pendingContext?tt(e,t.pendingContext,t.pendingContext!==t.context):t.context&&tt(e,t.context,!1),y(e,t.containerInfo)}function c(e,t){if(null!==e&&t.child!==e.child&&r("153"),null!==t.child){e=t.child;var n=lt(e,e.pendingProps,e.expirationTime);for(t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,n=n.sibling=lt(e,e.pendingProps,e.expirationTime),n.return=t;n.sibling=null}return t.child}function p(e,t){switch(t.tag){case 3:s(t);break;case 2:rt(t);break;case 4:y(t,t.stateNode.containerInfo)}return null}var f=e.shouldSetTextContent,d=e.useSyncScheduling,m=e.shouldDeprioritizeSubtree,h=t.pushHostContext,y=t.pushHostContainer,g=n.enterHydrationState,v=n.resetHydrationState,b=n.tryToClaimNextHydratableInstance;e=wt(o,a,function(e,t){e.memoizedProps=t},function(e,t){e.memoizedState=t});var C=e.adoptClassInstance,k=e.constructClassInstance,E=e.mountClassInstance,w=e.updateClassInstance;return{beginWork:function(e,t,n){if(0===t.expirationTime||t.expirationTime>n)return p(e,t);switch(t.tag){case 0:null!==e&&r("155");var o=t.type,a=t.pendingProps,x=Je(t);return x=Xe(t,x),o=o(a,x),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render?(t.tag=2,a=rt(t),C(t,o),E(t,n),t=u(e,t,!0,a)):(t.tag=1,l(e,t,o),t.memoizedProps=a,t=t.child),t;case 1:e:{if(a=t.type,n=t.pendingProps,o=t.memoizedProps,ho.current)null===n&&(n=o);else if(null===n||o===n){t=c(e,t);break e}o=Je(t),o=Xe(t,o),a=a(n,o),t.effectTag|=1,l(e,t,a),t.memoizedProps=n,t=t.child}return t;case 2:return a=rt(t),o=void 0,null===e?t.stateNode?r("153"):(k(t,t.pendingProps),E(t,n),o=!0):o=w(e,t,n),u(e,t,o,a);case 3:return s(t),a=t.updateQueue,null!==a?(o=t.memoizedState,a=kt(e,t,a,null,null,n),o===a?(v(),t=c(e,t)):(o=a.element,x=t.stateNode,(null===e||null===e.child)&&x.hydrate&&g(t)?(t.effectTag|=2,t.child=Oo(t,null,o,n)):(v(),l(e,t,o)),t.memoizedState=a,t=t.child)):(v(),t=c(e,t)),t;case 5:h(t),null===e&&b(t),a=t.type;var T=t.memoizedProps;return o=t.pendingProps,null===o&&null===(o=T)&&r("154"),x=null!==e?e.memoizedProps:null,ho.current||null!==o&&T!==o?(T=o.children,f(a,o)?T=null:x&&f(a,x)&&(t.effectTag|=16),i(e,t),2147483647!==n&&!d&&m(a,o)?(t.expirationTime=2147483647,t=null):(l(e,t,T),t.memoizedProps=o,t=t.child)):t=c(e,t),t;case 6:return null===e&&b(t),e=t.pendingProps,null===e&&(e=t.memoizedProps),t.memoizedProps=e,null;case 8:t.tag=7;case 7:return a=t.pendingProps,ho.current?null===a&&null===(a=e&&e.memoizedProps)&&r("154"):null!==a&&t.memoizedProps!==a||(a=t.memoizedProps),o=a.children,t.stateNode=null===e?Oo(t,t.stateNode,o,n):So(t,t.stateNode,o,n),t.memoizedProps=a,t.stateNode;case 9:return null;case 4:e:{if(y(t,t.stateNode.containerInfo),a=t.pendingProps,ho.current)null===a&&null==(a=e&&e.memoizedProps)&&r("154");else if(null===a||t.memoizedProps===a){t=c(e,t);break e}null===e?t.child=So(t,null,a,n):l(e,t,a),t.memoizedProps=a,t=t.child}return t;case 10:e:{if(n=t.pendingProps,ho.current)null===n&&(n=t.memoizedProps);else if(null===n||t.memoizedProps===n){t=c(e,t);break e}l(e,t,n),t.memoizedProps=n,t=t.child}return t;default:r("156")}},beginFailedWork:function(e,t,n){switch(t.tag){case 2:rt(t);break;case 3:s(t);break;default:r("157")}return t.effectTag|=64,null===e?t.child=null:t.child!==e.child&&(t.child=e.child),0===t.expirationTime||t.expirationTime>n?p(e,t):(t.firstEffect=null,t.lastEffect=null,t.child=null===e?Oo(t,null,null,n):So(t,e.child,null,n),2===t.tag&&(e=t.stateNode,t.memoizedProps=e.props,t.memoizedState=e.state),t.child)}}}function Pt(e,t,n){function o(e){e.effectTag|=4}var a=e.createInstance,l=e.createTextInstance,i=e.appendInitialChild,u=e.finalizeInitialChildren,s=e.prepareUpdate,c=e.persistence,p=t.getRootHostContainer,f=t.popHostContext,d=t.getHostContext,m=t.popHostContainer,h=n.prepareToHydrateHostInstance,y=n.prepareToHydrateHostTextInstance,g=n.popHydrationState,v=void 0,b=void 0,C=void 0;return e.mutation?(v=function(){},b=function(e,t,n){(t.updateQueue=n)&&o(t)},C=function(e,t,n,r){n!==r&&o(t)}):r(c?"235":"236"),{completeWork:function(e,t,n){var c=t.pendingProps;switch(null===c?c=t.memoizedProps:2147483647===t.expirationTime&&2147483647!==n||(t.pendingProps=null),t.tag){case 1:return null;case 2:return et(t),null;case 3:return m(t),Ge(ho,t),Ge(mo,t),c=t.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==e&&null!==e.child||(g(t),t.effectTag&=-3),v(t),null;case 5:f(t),n=p();var k=t.type;if(null!==e&&null!=t.stateNode){var E=e.memoizedProps,w=t.stateNode,x=d();w=s(w,k,E,c,n,x),b(e,t,w,k,E,c,n),e.ref!==t.ref&&(t.effectTag|=128)}else{if(!c)return null===t.stateNode&&r("166"),null;if(e=d(),g(t))h(t,n,e)&&o(t);else{e=a(k,c,n,e,t);e:for(E=t.child;null!==E;){if(5===E.tag||6===E.tag)i(e,E.stateNode);else if(4!==E.tag&&null!==E.child){E.child.return=E,E=E.child;continue}if(E===t)break;for(;null===E.sibling;){if(null===E.return||E.return===t)break e;E=E.return}E.sibling.return=E.return,E=E.sibling}u(e,k,c,n)&&o(t),t.stateNode=e}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)C(e,t,e.memoizedProps,c);else{if("string"!=typeof c)return null===t.stateNode&&r("166"),null;e=p(),n=d(),g(t)?y(t)&&o(t):t.stateNode=l(c,e,n,t)}return null;case 7:(c=t.memoizedProps)||r("165"),t.tag=8,k=[];e:for((E=t.stateNode)&&(E.return=t);null!==E;){if(5===E.tag||6===E.tag||4===E.tag)r("247");else if(9===E.tag)k.push(E.type);else if(null!==E.child){E.child.return=E,E=E.child;continue}for(;null===E.sibling;){if(null===E.return||E.return===t)break e;E=E.return}E.sibling.return=E.return,E=E.sibling}return E=c.handler,c=E(c.props,k),t.child=So(t,null!==e?e.child:null,c,n),t.child;case 8:return t.tag=7,null;case 9:case 10:return null;case 4:return m(t),v(t),null;case 0:r("167");default:r("156")}}}}function Nt(e,t){function n(e){var n=e.ref;if(null!==n)try{n(null)}catch(n){t(e,n)}}function o(e){switch("function"==typeof yt&&yt(e),e.tag){case 2:n(e);var r=e.stateNode;if("function"==typeof r.componentWillUnmount)try{r.props=e.memoizedProps,r.state=e.memoizedState,r.componentWillUnmount()}catch(n){t(e,n)}break;case 5:n(e);break;case 7:a(e.stateNode);break;case 4:s&&i(e)}}function a(e){for(var t=e;;)if(o(t),null===t.child||s&&4===t.tag){if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function l(e){return 5===e.tag||3===e.tag||4===e.tag}function i(e){for(var t=e,n=!1,l=void 0,i=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&r("160"),n.tag){case 5:l=n.stateNode,i=!1;break e;case 3:case 4:l=n.stateNode.containerInfo,i=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag)a(t),i?b(l,t.stateNode):v(l,t.stateNode);else if(4===t.tag?l=t.stateNode.containerInfo:o(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return,4===t.tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}var u=e.getPublicInstance,s=e.mutation;e=e.persistence,s||r(e?"235":"236");var c=s.commitMount,p=s.commitUpdate,f=s.resetTextContent,d=s.commitTextUpdate,m=s.appendChild,h=s.appendChildToContainer,y=s.insertBefore,g=s.insertInContainerBefore,v=s.removeChild,b=s.removeChildFromContainer;return{commitResetTextContent:function(e){f(e.stateNode)},commitPlacement:function(e){e:{for(var t=e.return;null!==t;){if(l(t)){var n=t;break e}t=t.return}r("160"),n=void 0}var o=t=void 0;switch(n.tag){case 5:t=n.stateNode,o=!1;break;case 3:case 4:t=n.stateNode.containerInfo,o=!0;break;default:r("161")}16&n.effectTag&&(f(t),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||l(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var a=e;;){if(5===a.tag||6===a.tag)n?o?g(t,a.stateNode,n):y(t,a.stateNode,n):o?h(t,a.stateNode):m(t,a.stateNode);else if(4!==a.tag&&null!==a.child){a.child.return=a,a=a.child;continue}if(a===e)break;for(;null===a.sibling;){if(null===a.return||a.return===e)return;a=a.return}a.sibling.return=a.return,a=a.sibling}},commitDeletion:function(e){i(e),e.return=null,e.child=null,e.alternate&&(e.alternate.child=null,e.alternate.return=null)},commitWork:function(e,t){switch(t.tag){case 2:break;case 5:var n=t.stateNode;if(null!=n){var o=t.memoizedProps;e=null!==e?e.memoizedProps:o;var a=t.type,l=t.updateQueue;t.updateQueue=null,null!==l&&p(n,l,a,e,o,t)}break;case 6:null===t.stateNode&&r("162"),n=t.memoizedProps,d(t.stateNode,null!==e?e.memoizedProps:n,n);break;case 3:break;default:r("163")}},commitLifeCycles:function(e,t){switch(t.tag){case 2:var n=t.stateNode;if(4&t.effectTag)if(null===e)n.props=t.memoizedProps,n.state=t.memoizedState,n.componentDidMount();else{var o=e.memoizedProps;e=e.memoizedState,n.props=t.memoizedProps,n.state=t.memoizedState,n.componentDidUpdate(o,e)}t=t.updateQueue,null!==t&&Et(t,n);break;case 3:n=t.updateQueue,null!==n&&Et(n,null!==t.child?t.child.stateNode:null);break;case 5:n=t.stateNode,null===e&&4&t.effectTag&&c(n,t.type,t.memoizedProps,t);break;case 6:case 4:break;default:r("163")}},commitAttachRef:function(e){var t=e.ref;if(null!==t){var n=e.stateNode;switch(e.tag){case 5:t(u(n));break;default:t(n)}}},commitDetachRef:function(e){null!==(e=e.ref)&&e(null)}}}function It(e){function t(e){return e===Po&&r("174"),e}var n=e.getChildHostContext,o=e.getRootHostContext,a={current:Po},l={current:Po},i={current:Po};return{getHostContext:function(){return t(a.current)},getRootHostContainer:function(){return t(i.current)},popHostContainer:function(e){Ge(a,e),Ge(l,e),Ge(i,e)},popHostContext:function(e){l.current===e&&(Ge(a,e),Ge(l,e))},pushHostContainer:function(e,t){Ye(i,t,e),t=o(t),Ye(l,e,e),Ye(a,t,e)},pushHostContext:function(e){var r=t(i.current),o=t(a.current);r=n(o,e.type,r),o!==r&&(Ye(l,e,e),Ye(a,r,e))},resetHostContainer:function(){a.current=Po,i.current=Po}}}function Rt(e){function t(e,t){var n=new at(5,null,0);n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function n(e,t){switch(e.tag){case 5:return null!==(t=l(t,e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=i(t,e.pendingProps))&&(e.stateNode=t,!0);default:return!1}}function o(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag;)e=e.return;f=e}var a=e.shouldSetTextContent;if(!(e=e.hydration))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){r("175")},prepareToHydrateHostTextInstance:function(){r("176")},popHydrationState:function(){return!1}};var l=e.canHydrateInstance,i=e.canHydrateTextInstance,u=e.getNextHydratableSibling,s=e.getFirstHydratableChild,c=e.hydrateInstance,p=e.hydrateTextInstance,f=null,d=null,m=!1;return{enterHydrationState:function(e){return d=s(e.stateNode.containerInfo),f=e,m=!0},resetHydrationState:function(){d=f=null,m=!1},tryToClaimNextHydratableInstance:function(e){if(m){var r=d;if(r){if(!n(e,r)){if(!(r=u(r))||!n(e,r))return e.effectTag|=2,m=!1,void(f=e);t(f,d)}f=e,d=s(r)}else e.effectTag|=2,m=!1,f=e}},prepareToHydrateHostInstance:function(e,t,n){return t=c(e.stateNode,e.type,e.memoizedProps,t,n,e),e.updateQueue=t,null!==t},prepareToHydrateHostTextInstance:function(e){return p(e.stateNode,e.memoizedProps,e)},popHydrationState:function(e){if(e!==f)return!1;if(!m)return o(e),m=!0,!1;var n=e.type;if(5!==e.tag||"head"!==n&&"body"!==n&&!a(n,e.memoizedProps))for(n=d;n;)t(e,n),n=u(n);return o(e),d=f?u(e.stateNode):null,!0}}}function Dt(e){function t(e){ae=G=!0;var t=e.stateNode;if(t.current===e&&r("177"),t.isReadyForCommit=!1,zr.current=null,1l.expirationTime)&&(a=l.expirationTime),l=l.sibling;o.expirationTime=a}if(null!==t)return t;if(null!==n&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1e))if(X<=Q)for(;null!==Y;)Y=s(Y)?a(Y):o(Y);else for(;null!==Y&&!E();)Y=s(Y)?a(Y):o(Y)}else if(!(0===X||X>e))if(X<=Q)for(;null!==Y;)Y=o(Y);else for(;null!==Y&&!E();)Y=o(Y)}function i(e,t){if(G&&r("243"),G=!0,e.isReadyForCommit=!1,e!==J||t!==X||null===Y){for(;-1t)&&(e.expirationTime=t),null!==e.alternate&&(0===e.alternate.expirationTime||e.alternate.expirationTime>t)&&(e.alternate.expirationTime=t),null===e.return){if(3!==e.tag)break;var n=e.stateNode;!G&&n===J&&tCe&&r("185"),null===o.nextScheduledRoot)o.remainingExpirationTime=a,null===ue?(ie=ue=o,o.nextScheduledRoot=o):(ue=ue.nextScheduledRoot=o,ue.nextScheduledRoot=ie);else{var l=o.remainingExpirationTime;(0===l||ase)return;V(ce)}var t=j()-q;se=e,ce=z(b,{timeout:10*(e-2)-t})}function v(){var e=0,t=null;if(null!==ue)for(var n=ue,o=ie;null!==o;){var a=o.remainingExpirationTime;if(0===a){if((null===n||null===ue)&&r("244"),o===o.nextScheduledRoot){ie=ue=o.nextScheduledRoot=null;break}if(o===ie)ie=a=o.nextScheduledRoot,ue.nextScheduledRoot=a,o.nextScheduledRoot=null;else{if(o===ue){ue=n,ue.nextScheduledRoot=ie,o.nextScheduledRoot=null;break}n.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=n.nextScheduledRoot}else{if((0===e||awe)&&(me=!0)}function w(e){null===fe&&r("246"),fe.remainingExpirationTime=0,he||(he=!0,ye=e)}var x=It(e),T=Rt(e),_=x.popHostContainer,S=x.popHostContext,O=x.resetHostContainer,P=Ot(e,x,T,d,f),N=P.beginWork,I=P.beginFailedWork,R=Pt(e,x,T).completeWork;x=Nt(e,u);var D=x.commitResetTextContent,M=x.commitPlacement,F=x.commitDeletion,A=x.commitWork,L=x.commitLifeCycles,U=x.commitAttachRef,H=x.commitDetachRef,j=e.now,z=e.scheduleDeferredCallback,V=e.cancelDeferredCallback,B=e.useSyncScheduling,K=e.prepareForCommit,W=e.resetAfterCommit,q=j(),Q=2,$=0,G=!1,Y=null,J=null,X=0,Z=null,ee=null,te=null,ne=null,re=null,oe=!1,ae=!1,le=!1,ie=null,ue=null,se=0,ce=-1,pe=!1,fe=null,de=0,me=!1,he=!1,ye=null,ge=null,ve=!1,be=!1,Ce=1e3,Ee=0,we=1;return{computeAsyncExpiration:p,computeExpirationForFiber:f,scheduleWork:d,batchedUpdates:function(e,t){var n=ve;ve=!0;try{return e(t)}finally{(ve=n)||pe||C(1,null)}},unbatchedUpdates:function(e){if(ve&&!be){be=!0;try{return e()}finally{be=!1}}return e()},flushSync:function(e){var t=ve;ve=!0;try{e:{var n=$;$=1;try{var o=e();break e}finally{$=n}o=void 0}return o}finally{ve=t,pe&&r("187"),C(1,null)}},deferredUpdates:function(e){var t=$;$=p();try{return e()}finally{$=t}}}}function Mt(e){function t(e){return e=_e(e),null===e?null:e.stateNode}var n=e.getPublicInstance;e=Dt(e);var o=e.computeAsyncExpiration,a=e.computeExpirationForFiber,l=e.scheduleWork;return{createContainer:function(e,t){var n=new at(3,null,0);return e={current:n,containerInfo:e,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:t,nextScheduledRoot:null},n.stateNode=e},updateContainer:function(e,t,n,i){var u=t.current;if(n){n=n._reactInternalFiber;var s;e:{for(2===Ee(n)&&2===n.tag||r("170"),s=n;3!==s.tag;){if(Ze(s)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break e}(s=s.return)||r("171")}s=s.stateNode.context}n=Ze(n)?nt(n,s):s}else n=On;null===t.context?t.context=n:t.pendingContext=n,t=i,t=void 0===t?null:t,i=null!=e&&null!=e.type&&null!=e.type.prototype&&!0===e.type.prototype.unstable_isAsyncReactComponent?o():a(u),bt(u,{expirationTime:i,partialState:{element:e},callback:t,isReplace:!1,isForced:!1,nextCallback:null,next:null}),l(u,i)},batchedUpdates:e.batchedUpdates,unbatchedUpdates:e.unbatchedUpdates,deferredUpdates:e.deferredUpdates,flushSync:e.flushSync,getPublicRootInstance:function(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return n(e.child.stateNode);default:return e.child.stateNode}},findHostInstance:t,findHostInstanceWithNoPortals:function(e){return e=Se(e),null===e?null:e.stateNode},injectIntoDevTools:function(e){var n=e.findFiberByHostInstance;return mt(kn({},e,{findHostInstanceByFiber:function(e){return t(e)},findFiberByHostInstance:function(e){return n?n(e):null}}))}}}function Ft(e,t,n){var r=3n||r.hasOverloadedBooleanValue&&!1===n?Ht(e,t):r.mustUseProperty?e[r.propertyName]=n:(t=r.attributeName,(o=r.attributeNamespace)?e.setAttributeNS(o,t,""+n):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===n?e.setAttribute(t,""):e.setAttribute(t,""+n))}else Ut(e,t,a(t,n)?n:null)}function Ut(e,t,n){At(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))}function Ht(e,t){var n=l(t);n?(t=n.mutationMethod)?t(e,void 0):n.mustUseProperty?e[n.propertyName]=!n.hasBooleanValue&&"":e.removeAttribute(n.attributeName):e.removeAttribute(t)}function jt(e,t){var n=t.value,r=t.checked;return kn({type:void 0,step:void 0,min:void 0,max:void 0},t,{defaultChecked:void 0,defaultValue:void 0,value:null!=n?n:e._wrapperState.initialValue,checked:null!=r?r:e._wrapperState.initialChecked})}function zt(e,t){var n=t.defaultValue;e._wrapperState={initialChecked:null!=t.checked?t.checked:t.defaultChecked,initialValue:null!=t.value?t.value:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Vt(e,t){null!=(t=t.checked)&&Lt(e,"checked",t)}function Bt(e,t){Vt(e,t);var n=t.value;null!=n?0===n&&""===e.value?e.value="0":"number"===t.type?(t=parseFloat(e.value)||0,(n!=t||n==t&&e.value!=n)&&(e.value=""+n)):e.value!==""+n&&(e.value=""+n):(null==t.value&&null!=t.defaultValue&&e.defaultValue!==""+t.defaultValue&&(e.defaultValue=""+t.defaultValue),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked))}function Kt(e,t){switch(t.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":e.value="",e.value=e.defaultValue;break;default:e.value=e.value}t=e.name,""!==t&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!e.defaultChecked,""!==t&&(e.name=t)}function Wt(e){var t="";return bn.Children.forEach(e,function(e){null==e||"string"!=typeof e&&"number"!=typeof e||(t+=e)}),t}function qt(e,t){return e=kn({children:void 0},t),(t=Wt(t.children))&&(e.children=t),e}function Qt(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o=t.length||r("93"),t=t[0]),n=""+t),null==n&&(n="")),e._wrapperState={initialValue:""+n}}function Jt(e,t){var n=t.value;null!=n&&(n=""+n,n!==e.value&&(e.value=n),null==t.defaultValue&&(e.defaultValue=n)),null!=t.defaultValue&&(e.defaultValue=t.defaultValue)}function Xt(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}function Zt(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function en(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Zt(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}function tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function nn(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=n,a=t[n];o=null==a||"boolean"==typeof a||""===a?"":r||"number"!=typeof a||0===a||Zo.hasOwnProperty(o)&&Zo[o]?(""+a).trim():a+"px","float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}function rn(e,t,n){t&&(ta[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&r("137",e,n()),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&r("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||r("61")),null!=t.style&&"object"!=typeof t.style&&r("62",n()))}function on(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function an(e,t){e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument;var n=Fe(e);t=Yn[t];for(var r=0;r<\/script>",e=e.removeChild(e.firstChild)):e="string"==typeof t.is?n.createElement(e,{is:t.is}):n.createElement(e):e=n.createElementNS(r,e),e}function un(e,t){return(9===t.nodeType?t:t.ownerDocument).createTextNode(e)}function sn(e,t,n,r){var o=on(t,n);switch(t){case"iframe":case"object":Ne("topLoad","load",e);var a=n;break;case"video":case"audio":for(a in oa)oa.hasOwnProperty(a)&&Ne(a,oa[a],e);a=n;break;case"source":Ne("topError","error",e),a=n;break;case"img":case"image":Ne("topError","error",e),Ne("topLoad","load",e),a=n;break;case"form":Ne("topReset","reset",e),Ne("topSubmit","submit",e),a=n;break;case"details":Ne("topToggle","toggle",e),a=n;break;case"input":zt(e,n),a=jt(e,n),Ne("topInvalid","invalid",e),an(r,"onChange");break;case"option":a=qt(e,n);break;case"select":$t(e,n),a=kn({},n,{value:void 0}),Ne("topInvalid","invalid",e),an(r,"onChange");break;case"textarea":Yt(e,n),a=Gt(e,n),Ne("topInvalid","invalid",e),an(r,"onChange");break;default:a=n}rn(t,a,ra);var l,i=a;for(l in i)if(i.hasOwnProperty(l)){var u=i[l];"style"===l?nn(e,u,ra):"dangerouslySetInnerHTML"===l?null!=(u=u?u.__html:void 0)&&Xo(e,u):"children"===l?"string"==typeof u?("textarea"!==t||""!==u)&&tn(e,u):"number"==typeof u&&tn(e,""+u):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Gn.hasOwnProperty(l)?null!=u&&an(r,l):o?Ut(e,l,u):null!=u&&Lt(e,l,u))}switch(t){case"input":ae(e),Kt(e,n);break;case"textarea":ae(e),Xt(e,n);break;case"option":null!=n.value&&e.setAttribute("value",n.value);break;case"select":e.multiple=!!n.multiple,t=n.value,null!=t?Qt(e,!!n.multiple,t,!1):null!=n.defaultValue&&Qt(e,!!n.multiple,n.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=En)}}function cn(e,t,n,r,o){var a=null;switch(t){case"input":n=jt(e,n),r=jt(e,r),a=[];break;case"option":n=qt(e,n),r=qt(e,r),a=[];break;case"select":n=kn({},n,{value:void 0}),r=kn({},r,{value:void 0}),a=[];break;case"textarea":n=Gt(e,n),r=Gt(e,r),a=[];break;default:"function"!=typeof n.onClick&&"function"==typeof r.onClick&&(e.onclick=En)}rn(t,r,ra);var l,i;e=null;for(l in n)if(!r.hasOwnProperty(l)&&n.hasOwnProperty(l)&&null!=n[l])if("style"===l)for(i in t=n[l])t.hasOwnProperty(i)&&(e||(e={}),e[i]="");else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Gn.hasOwnProperty(l)?a||(a=[]):(a=a||[]).push(l,null));for(l in r){var u=r[l];if(t=null!=n?n[l]:void 0,r.hasOwnProperty(l)&&u!==t&&(null!=u||null!=t))if("style"===l)if(t){for(i in t)!t.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(e||(e={}),e[i]="");for(i in u)u.hasOwnProperty(i)&&t[i]!==u[i]&&(e||(e={}),e[i]=u[i])}else e||(a||(a=[]),a.push(l,e)),e=u;else"dangerouslySetInnerHTML"===l?(u=u?u.__html:void 0,t=t?t.__html:void 0,null!=u&&t!==u&&(a=a||[]).push(l,""+u)):"children"===l?t===u||"string"!=typeof u&&"number"!=typeof u||(a=a||[]).push(l,""+u):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(Gn.hasOwnProperty(l)?(null!=u&&an(o,l),a||t===u||(a=[])):(a=a||[]).push(l,u))}return e&&(a=a||[]).push("style",e),a}function pn(e,t,n,r,o){"input"===n&&"radio"===o.type&&null!=o.name&&Vt(e,o),on(n,r),r=on(n,o);for(var a=0;a=u.hasBooleanValue+u.hasNumericValue+u.hasOverloadedBooleanValue||r("50",i),l.hasOwnProperty(i)&&(u.attributeName=l[i]),a.hasOwnProperty(i)&&(u.attributeNamespace=a[i]),e.hasOwnProperty(i)&&(u.mutationMethod=e[i]),In[i]=u}}},In={},Rn=Nn,Dn=Rn.MUST_USE_PROPERTY,Mn=Rn.HAS_BOOLEAN_VALUE,Fn=Rn.HAS_NUMERIC_VALUE,An=Rn.HAS_POSITIVE_NUMERIC_VALUE,Ln=Rn.HAS_OVERLOADED_BOOLEAN_VALUE,Un=Rn.HAS_STRING_BOOLEAN_VALUE,Hn={Properties:{allowFullScreen:Mn,async:Mn,autoFocus:Mn,autoPlay:Mn,capture:Ln,checked:Dn|Mn,cols:An,contentEditable:Un,controls:Mn,default:Mn,defer:Mn,disabled:Mn,download:Ln,draggable:Un,formNoValidate:Mn,hidden:Mn,loop:Mn,multiple:Dn|Mn,muted:Dn|Mn,noValidate:Mn,open:Mn,playsInline:Mn,readOnly:Mn,required:Mn,reversed:Mn,rows:An,rowSpan:Fn,scoped:Mn,seamless:Mn,selected:Dn|Mn,size:An,start:Fn,span:An,spellCheck:Un,style:0,tabIndex:0,itemScope:Mn,acceptCharset:0,className:0,htmlFor:0,httpEquiv:0,value:Un},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}},jn=Rn.HAS_STRING_BOOLEAN_VALUE,zn={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},Vn={Properties:{autoReverse:jn,externalResourcesRequired:jn,preserveAlpha:jn},DOMAttributeNames:{autoReverse:"autoReverse",externalResourcesRequired:"externalResourcesRequired",preserveAlpha:"preserveAlpha"},DOMAttributeNamespaces:{xlinkActuate:zn.xlink,xlinkArcrole:zn.xlink,xlinkHref:zn.xlink,xlinkRole:zn.xlink,xlinkShow:zn.xlink,xlinkTitle:zn.xlink,xlinkType:zn.xlink,xmlBase:zn.xml,xmlLang:zn.xml,xmlSpace:zn.xml}},Bn=/[\-\:]([a-z])/g;"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode x-height xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xmlns:xlink xml:lang xml:space".split(" ").forEach(function(e){var t=e.replace(Bn,i);Vn.Properties[t]=0,Vn.DOMAttributeNames[t]=e}),Rn.injectDOMPropertyConfig(Hn),Rn.injectDOMPropertyConfig(Vn);var Kn={_caughtError:null,_hasCaughtError:!1,_rethrowError:null,_hasRethrowError:!1,injection:{injectErrorUtils:function(e){"function"!=typeof e.invokeGuardedCallback&&r("197"),u=e.invokeGuardedCallback}},invokeGuardedCallback:function(e,t,n,r,o,a,l,i,s){u.apply(Kn,arguments)},invokeGuardedCallbackAndCatchFirstError:function(e,t,n,r,o,a,l,i,u){if(Kn.invokeGuardedCallback.apply(this,arguments),Kn.hasCaughtError()){var s=Kn.clearCaughtError();Kn._hasRethrowError||(Kn._hasRethrowError=!0,Kn._rethrowError=s)}},rethrowCaughtError:function(){return s.apply(Kn,arguments)},hasCaughtError:function(){return Kn._hasCaughtError},clearCaughtError:function(){if(Kn._hasCaughtError){var e=Kn._caughtError;return Kn._caughtError=null,Kn._hasCaughtError=!1,e}r("198")}},Wn=null,qn={},Qn=[],$n={},Gn={},Yn={},Jn=Object.freeze({plugins:Qn,eventNameDispatchConfigs:$n,registrationNameModules:Gn,registrationNameDependencies:Yn,possibleRegistrationNames:null,injectEventPluginOrder:f,injectEventPluginsByName:d}),Xn=null,Zn=null,er=null,tr=null,nr={injectEventPluginOrder:f,injectEventPluginsByName:d},rr=Object.freeze({injection:nr,getListener:C,extractEvents:k,enqueueEvents:E,processEventQueue:w}),or=Math.random().toString(36).slice(2),ar="__reactInternalInstance$"+or,lr="__reactEventHandlers$"+or,ir=Object.freeze({precacheFiberNode:function(e,t){t[ar]=e},getClosestInstanceFromNode:x,getInstanceFromNode:function(e){return e=e[ar],!e||5!==e.tag&&6!==e.tag?null:e},getNodeFromInstance:T,getFiberCurrentPropsFromNode:_,updateFiberProps:function(e,t){e[lr]=t}}),ur=Object.freeze({accumulateTwoPhaseDispatches:M,accumulateTwoPhaseDispatchesSkipTarget:function(e){y(e,I)},accumulateEnterLeaveDispatches:F,accumulateDirectDispatches:function(e){y(e,D)}}),sr=null,cr={_root:null,_startText:null,_fallbackText:null},pr="dispatchConfig _targetInst nativeEvent isDefaultPrevented isPropagationStopped _dispatchListeners _dispatchInstances".split(" "),fr={type:null,target:null,currentTarget:En.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};kn(H.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=En.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=En.thatReturnsTrue)},persist:function(){this.isPersistent=En.thatReturnsTrue},isPersistent:En.thatReturnsFalse,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;for(t=0;t=parseInt(gr.version(),10))}var vr,br=yr,Cr=Cn.canUseDOM&&(!mr||hr&&8
=hr),kr=String.fromCharCode(32),Er={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")}},wr=!1,xr=!1,Tr={eventTypes:Er,extractEvents:function(e,t,n,r){var o;if(mr)e:{switch(e){case"topCompositionStart":var a=Er.compositionStart;break e;case"topCompositionEnd":a=Er.compositionEnd;break e;case"topCompositionUpdate":a=Er.compositionUpdate;break e}a=void 0}else xr?W(e,n)&&(a=Er.compositionEnd):"topKeyDown"===e&&229===n.keyCode&&(a=Er.compositionStart);return a?(Cr&&(xr||a!==Er.compositionStart?a===Er.compositionEnd&&xr&&(o=L()):(cr._root=r,cr._startText=U(),xr=!0)),a=B.getPooled(a,t,n,r),o?a.data=o:null!==(o=q(n))&&(a.data=o),M(a),o=a):o=null,(e=br?Q(e,n):$(e,n))?(t=K.getPooled(Er.beforeInput,t,n,r),t.data=e,M(t)):t=null,[o,t]}},_r=null,Sr=null,Or=null,Pr={injectFiberControlledHostComponent:function(e){_r=e}},Nr=Object.freeze({injection:Pr,enqueueStateRestore:Y,restoreStateIfNeeded:J}),Ir=!1,Rr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};Cn.canUseDOM&&(vr=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("",""));var Dr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"topBlur topChange topClick topFocus topInput topKeyDown topKeyUp topSelectionChange".split(" ")}},Mr=null,Fr=null,Ar=!1;Cn.canUseDOM&&(Ar=ne("input")&&(!document.documentMode||9=document.documentMode,eo={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange".split(" ")}},to=null,no=null,ro=null,oo=!1,ao={eventTypes:eo,extractEvents:function(e,t,n,r){var o,a=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!a)){e:{a=Fe(a),o=Yn.onSelect;for(var l=0;l=Vo-e){if(!(-1!==jo&&jo<=e))return void(zo||(zo=!0,requestAnimationFrame(qo)));Lo.didTimeout=!0}else Lo.didTimeout=!1;jo=-1,e=Uo,Uo=null,null!==e&&e(Lo)}},!1);var qo=function(e){zo=!1;var t=e-Vo+Ko;tt&&(t=8),Ko=t"+t+"",t=Jo.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}),Zo={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ea=["Webkit","ms","Moz","O"];Object.keys(Zo).forEach(function(e){ea.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Zo[t]=Zo[e]})});var ta=kn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),na=Yo.html,ra=En.thatReturns(""),oa={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},aa=Object.freeze({createElement:ln,createTextNode:un,setInitialProperties:sn,diffProperties:cn,updateProperties:pn,diffHydratedProperties:fn,diffHydratedText:dn,warnForUnmatchedText:function(){},warnForDeletedHydratableElement:function(){},warnForDeletedHydratableText:function(){},warnForInsertedHydratedElement:function(){},warnForInsertedHydratedText:function(){},restoreControlledState:function(e,t,n){switch(t){case"input":if(Bt(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;tr&&(o=r,r=e,e=o),o=Le(n,e);var a=Le(n,r);if(o&&a&&(1!==t.rangeCount||t.anchorNode!==o.node||t.anchorOffset!==o.offset||t.focusNode!==a.node||t.focusOffset!==a.offset)){var l=document.createRange();l.setStart(o.node,o.offset),t.removeAllRanges(),e>r?(t.addRange(l),t.extend(a.node,a.offset)):(l.setEnd(a.node,a.offset),t.addRange(l))}}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(Sn(n),n=0;n-1?n.split("/")[0].substr(1):t.versions[0];e.setState({versions:t.versions,version:r}),e.fetchDocs(r)})}},{key:"handleClick",value:function(e){e!==this.state.version&&(this.setState({version:e}),this.fetchDocs(e,!0))}},{key:"fetchDocs",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];fetch(e+".json").then(function(e){return e.json()}).then(function(e){t.setState({is_loaded:!0,symfony_version:e.version,updated_at:e.updated_at,composer_info:e.composer_info,types:e.types,type_extensions:e.type_extensions,type_guessers:e.type_guessers});var r=window.location.hash;r&&(window.location.hash="",n||(window.location.hash=r))},function(e){t.setState({is_loaded:!0,error:e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.error,r=t.is_loaded,o=t.versions,a=t.version,l=t.symfony_version,u=t.updated_at,s=t.composer_info,p=t.types,f=t.type_extensions,d=t.type_guessers;return n?i.a.createElement("div",null,"Error: ",n.message):r?i.a.createElement("div",null,i.a.createElement("section",{className:"page-header"},i.a.createElement("h1",{className:"project-name"},"Form Types Reference"),i.a.createElement("h2",{className:"project-tagline"},"Symfony comes standard with a large group of field types that cover all of the common form fields and data types you'll encounter."),i.a.createElement("a",{href:"https://github.com/phptopup/symfony-form",className:"btn"},"View on GitHub"),i.a.createElement("a",{href:"https://github.com/phptopup/symfony-form/zipball/master",className:"btn"},"Download .zip"),i.a.createElement("a",{href:"https://github.com/phptopup/symfony-form/tarball/master",className:"btn"},"Download .tar.gz")),i.a.createElement("section",{className:"main-content"},i.a.createElement("div",{className:"sf-doc-versions-container"},o.map(function(t){return i.a.createElement("code",{key:t,className:t===a?"selected":"",onClick:function(){return e.handleClick(t)}},t)})),i.a.createElement("h2",{id:"types"},"Built-in Field Types"),i.a.createElement("div",{style:{display:"inline-block"}},p.map(function(e){return i.a.createElement("a",{key:e.name,href:"#"+a+"/"+e.name,title:e.class,className:"float-left mr-0-5"},i.a.createElement("code",null,e.name))})),i.a.createElement("h2",{id:"type-extensions"},"Type Extensions"),i.a.createElement("div",{style:{display:"inline-block"}},f.map(function(e){return i.a.createElement("a",{key:e.name,href:"#"+a+"/"+e.name,title:e.class,className:"float-left mr-0-5"},i.a.createElement("code",null,e.name))})),i.a.createElement("h2",{id:"type-guessers"},"Type Guessers"),i.a.createElement("div",{style:{display:"inline-block"}},d.map(function(e){return i.a.createElement("a",{key:e.name,href:"#"+a+"/"+e.name,title:e.class,className:"float-left mr-0-5"},i.a.createElement("code",null,e.name))}))),i.a.createElement("section",{className:"build-info-container"},i.a.createElement("div",{className:"build-info"},i.a.createElement("div",null,"Symfony version: ",i.a.createElement("strong",null,l)," ",i.a.createElement("span",{className:"composer-info-container"}," ( ",i.a.createElement("span",{className:"composer-info-label"},"Composer Info")," ) ",i.a.createElement("div",{className:"composer-info"},i.a.createElement("pre",null,i.a.createElement("code",null,s))))),i.a.createElement("div",null,"Last update: ",i.a.createElement("strong",null,u)))),i.a.createElement("section",{className:"main-content"},p.map(function(e){return i.a.createElement(c.a,{key:e.name,name:e.name,cls:e.class,api:e.api,block_prefix:e.block_prefix,options:e.options,parent_types:e.parent_types,type_extensions:e.type_extensions,version:a})}),i.a.createElement("footer",{className:"site-footer"},i.a.createElement("span",{className:"site-footer-owner"},i.a.createElement("a",{href:"https://phptopup.github.io/symfony-form/index.html"},"This page")," is maintained by ",i.a.createElement("a",{href:"https://github.com/yceruto"},"Yonel Ceruto"),"."),i.a.createElement("span",{className:"site-footer-credits"},"The content of this page was generated by ",i.a.createElement("a",{href:"https://github.com/phptopup/symfony-form"},"phptopup/symfony-form"),".")))):""}}]),t}(l.Component);s.a.render(i.a.createElement(f,null),document.getElementById("root"))},bJvU:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n("GiK3"),i=n.n(l),u=n("KSGD"),s=n.n(u),c=n("Vd8h"),p=function(){function e(e,t){for(var n=0;nF.length&&F.push(e)}function d(e,t,n,o){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=null);var l=!1;if(null===e)l=!0;else switch(a){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case E:case w:case x:case T:l=!0}}if(l)return n(o,e,""===t?"."+m(e,0):t),1;if(l=0,t=""===t?".":t+":",Array.isArray(e))for(var i=0;i
2 |
3 |
4 |
5 |
6 |
7 | Symfony Form Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "@symfony/webpack-encore": "^0.17.0",
4 | "babel-preset-react": "^6.24.1",
5 | "node-sass": "^4.13.1",
6 | "sass-loader": "^6.0.6"
7 | },
8 | "license": "MIT",
9 | "private": false,
10 | "scripts": {
11 | "dev-server": "encore dev-server",
12 | "dev": "encore dev",
13 | "watch": "encore dev --watch",
14 | "build": "encore production"
15 | },
16 | "dependencies": {
17 | "babel-preset-es2017": "^6.24.1",
18 | "prop-types": "^15.6.0",
19 | "react": "^16.2.0",
20 | "react-dom": "^16.2.1",
21 | "react-redux": "^5.0.6",
22 | "redux": "^3.7.2"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Command/BuildCommand.php:
--------------------------------------------------------------------------------
1 | command = $this->getApplication()->find('debug:form');
26 | $this->apiVersion = substr(Kernel::VERSION, 0, 3);
27 | }
28 |
29 | protected function execute(InputInterface $input, OutputInterface $output)
30 | {
31 | $version = false !== strpos(Kernel::VERSION, '-DEV') ? 'master' : Kernel::VERSION;
32 |
33 | $data = [
34 | 'version' => $version,
35 | 'updated_at' => date('D, d M Y'),
36 | 'composer_info' => $this->getComposerInfo(),
37 | ];
38 |
39 | // Generate docs content
40 | $result = $this->runDebugFormCommand();
41 | $result['types'] = array_merge($result['builtin_form_types'], $result['service_form_types']);
42 | unset($result['builtin_form_types'], $result['service_form_types']);
43 |
44 | // Setting metadata for all classes
45 | foreach ($result as $key => $classes) {
46 | foreach ($classes as $class) {
47 | $data[$key][] = [
48 | 'name' => $this->getClassName($class),
49 | 'class' => $class,
50 | 'api' => $this->getApiUrl($class),
51 | ];
52 | }
53 | }
54 |
55 | // Setting options metadata for each type
56 | foreach ($data['types'] as $i => $metadata) {
57 | $data['types'][$i] += $this->getTypeOptions($metadata['class']);
58 | }
59 |
60 | // Update versions list in docs.json
61 | $updated = false;
62 | $docsFile = __DIR__.'/../../docs/docs.json';
63 | $docsData = json_decode(file_get_contents($docsFile), true);
64 | foreach ($docsData['versions'] as $i => $v) {
65 | if (0 === strpos($v, substr($version, 0, 3))) {
66 | if ($v !== $version && file_exists($filename = __DIR__.'/../../docs/'.$v.'.json')) {
67 | unlink($filename);
68 | }
69 | $docsData['versions'][$i] = $version;
70 | $updated = true;
71 | break;
72 | }
73 | }
74 | if (!$updated) {
75 | // Add new version to docs file
76 | $master = array_shift($docsData['versions']);
77 | array_unshift($docsData['versions'], $master, $version);
78 | }
79 | file_put_contents($docsFile, json_encode($docsData));
80 |
81 | // Save generated docs content
82 | file_put_contents(__DIR__.'/../../docs/'.$version.'.json', json_encode($data));
83 | }
84 |
85 | private function getTypeOptions(string $class): array
86 | {
87 | $result = $this->runDebugFormCommand($class);
88 | unset($result['class'], $result['options']['required']);
89 | if (!empty($result['options']['own'])) {
90 | $result['options']['own'] = [$class => $result['options']['own']];
91 | }
92 |
93 | foreach ($result['options'] as $key => $options) {
94 | foreach ($options as $groupClass => $opts) {
95 | foreach ($opts as $j => $option) {
96 | $result['options'][$key][$groupClass][$j] = [
97 | 'name' => $option,
98 | ] + $this->runDebugFormCommand($class, $option);
99 | }
100 | }
101 | }
102 |
103 | return $result;
104 | }
105 |
106 | private function runDebugFormCommand(string $class = null, string $option = null): array
107 | {
108 | $arguments = [
109 | 'command' => 'debug:form',
110 | 'class' => $class,
111 | 'option' => $option,
112 | '--format' => 'json',
113 | ];
114 | $bufferedOutput = new BufferedOutput();
115 | $this->command->run(new ArrayInput($arguments), $bufferedOutput);
116 |
117 | $result = json_decode($bufferedOutput->fetch(), !$option);
118 |
119 | if ($option) {
120 | // necessary to differentiate object from array in "default" property definition
121 | return (array) $result;
122 | }
123 |
124 | return $result;
125 | }
126 |
127 | private function getComposerInfo()
128 | {
129 | $process = new Process('composer info');
130 | $process->run();
131 |
132 | if (!$process->isSuccessful()) {
133 | throw new ProcessFailedException($process);
134 | }
135 |
136 | return $process->getOutput();
137 | }
138 |
139 | private function getClassName(string $class): string
140 | {
141 | return \array_slice(explode('\\', $class), -1)[0];
142 | }
143 |
144 | private function getApiUrl(string $class): string
145 | {
146 | return 'http://api.symfony.com/'.$this->apiVersion.'/'.str_replace('\\', '/', $class).'.html';
147 | }
148 | }
149 |
--------------------------------------------------------------------------------
/src/Entity/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phplancer/symfony-form/a8146fe6c44c366b04af6a99b18d54bda7695179/src/Entity/.gitignore
--------------------------------------------------------------------------------
/src/Kernel.php:
--------------------------------------------------------------------------------
1 | getProjectDir().'/var/cache/'.$this->environment;
20 | }
21 |
22 | public function getLogDir()
23 | {
24 | return $this->getProjectDir().'/var/log';
25 | }
26 |
27 | public function registerBundles()
28 | {
29 | $contents = require $this->getProjectDir().'/config/bundles.php';
30 | foreach ($contents as $class => $envs) {
31 | if (isset($envs['all']) || isset($envs[$this->environment])) {
32 | yield new $class();
33 | }
34 | }
35 | }
36 |
37 | protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
38 | {
39 | $container->setParameter('container.autowiring.strict_mode', true);
40 | $container->setParameter('container.dumper.inline_class_loader', true);
41 | $confDir = $this->getProjectDir().'/config';
42 |
43 | $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
44 | $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
45 | $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
46 | $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
47 | }
48 |
49 | protected function configureRoutes(RouteCollectionBuilder $routes)
50 | {
51 | $confDir = $this->getProjectDir().'/config';
52 |
53 | $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
54 | $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
55 | $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/symfony.lock:
--------------------------------------------------------------------------------
1 | {
2 | "doctrine/annotations": {
3 | "version": "1.0",
4 | "recipe": {
5 | "repo": "github.com/symfony/recipes",
6 | "branch": "master",
7 | "version": "1.0",
8 | "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
9 | }
10 | },
11 | "doctrine/cache": {
12 | "version": "v1.7.1"
13 | },
14 | "doctrine/collections": {
15 | "version": "v1.5.0"
16 | },
17 | "doctrine/common": {
18 | "version": "v2.8.1"
19 | },
20 | "doctrine/dbal": {
21 | "version": "v2.6.3"
22 | },
23 | "doctrine/doctrine-bundle": {
24 | "version": "1.6",
25 | "recipe": {
26 | "repo": "github.com/symfony/recipes",
27 | "branch": "master",
28 | "version": "1.6",
29 | "ref": "44d3aa7752dd46f77ba11af2297a25e1dedfb4d0"
30 | }
31 | },
32 | "doctrine/doctrine-cache-bundle": {
33 | "version": "1.3.5"
34 | },
35 | "doctrine/event-manager": {
36 | "version": "v1.0.0"
37 | },
38 | "doctrine/inflector": {
39 | "version": "v1.3.0"
40 | },
41 | "doctrine/instantiator": {
42 | "version": "1.1.0"
43 | },
44 | "doctrine/lexer": {
45 | "version": "v1.0.1"
46 | },
47 | "doctrine/orm": {
48 | "version": "v2.6.0"
49 | },
50 | "doctrine/persistence": {
51 | "version": "v1.0.0"
52 | },
53 | "doctrine/reflection": {
54 | "version": "v1.0.0"
55 | },
56 | "jdorn/sql-formatter": {
57 | "version": "v1.2.17"
58 | },
59 | "psr/cache": {
60 | "version": "1.0.1"
61 | },
62 | "psr/container": {
63 | "version": "1.0.0"
64 | },
65 | "psr/event-dispatcher": {
66 | "version": "1.0.x-dev"
67 | },
68 | "psr/log": {
69 | "version": "1.0.2"
70 | },
71 | "symfony/asset": {
72 | "version": "v3.4.13"
73 | },
74 | "symfony/cache": {
75 | "version": "v4.0.4"
76 | },
77 | "symfony/cache-contracts": {
78 | "version": "v1.1.5"
79 | },
80 | "symfony/class-loader": {
81 | "version": "v3.4.19"
82 | },
83 | "symfony/config": {
84 | "version": "v4.0.4"
85 | },
86 | "symfony/console": {
87 | "version": "3.3",
88 | "recipe": {
89 | "repo": "github.com/symfony/recipes",
90 | "branch": "master",
91 | "version": "3.3",
92 | "ref": "9f94d3ea453cd8a3b95db7f82592d7344fe3a76a"
93 | }
94 | },
95 | "symfony/contracts": {
96 | "version": "v1.1.5"
97 | },
98 | "symfony/debug": {
99 | "version": "v4.4.0"
100 | },
101 | "symfony/dependency-injection": {
102 | "version": "v4.0.4"
103 | },
104 | "symfony/doctrine-bridge": {
105 | "version": "v4.0.4"
106 | },
107 | "symfony/dotenv": {
108 | "version": "v4.0.4"
109 | },
110 | "symfony/error-catcher": {
111 | "version": "4.4-dev"
112 | },
113 | "symfony/error-handler": {
114 | "version": "5.1-dev"
115 | },
116 | "symfony/event-dispatcher": {
117 | "version": "v4.0.4"
118 | },
119 | "symfony/event-dispatcher-contracts": {
120 | "version": "v1.1.5"
121 | },
122 | "symfony/filesystem": {
123 | "version": "v4.0.4"
124 | },
125 | "symfony/finder": {
126 | "version": "v4.0.4"
127 | },
128 | "symfony/flex": {
129 | "version": "1.0",
130 | "recipe": {
131 | "repo": "github.com/symfony/recipes",
132 | "branch": "master",
133 | "version": "1.0",
134 | "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4"
135 | }
136 | },
137 | "symfony/form": {
138 | "version": "v4.0.4"
139 | },
140 | "symfony/framework-bundle": {
141 | "version": "3.3",
142 | "recipe": {
143 | "repo": "github.com/symfony/recipes",
144 | "branch": "master",
145 | "version": "3.3",
146 | "ref": "ab8d43770fe04b6df060fc74b807a547144a6d99"
147 | }
148 | },
149 | "symfony/http-foundation": {
150 | "version": "v4.0.4"
151 | },
152 | "symfony/http-kernel": {
153 | "version": "v4.0.4"
154 | },
155 | "symfony/inflector": {
156 | "version": "v4.0.4"
157 | },
158 | "symfony/intl": {
159 | "version": "v4.0.4"
160 | },
161 | "symfony/mime": {
162 | "version": "v4.3.2"
163 | },
164 | "symfony/options-resolver": {
165 | "version": "v4.0.4"
166 | },
167 | "symfony/orm-pack": {
168 | "version": "v1.0.5"
169 | },
170 | "symfony/polyfill-intl-icu": {
171 | "version": "v1.7.0"
172 | },
173 | "symfony/polyfill-intl-idn": {
174 | "version": "v1.11.0"
175 | },
176 | "symfony/polyfill-mbstring": {
177 | "version": "v1.7.0"
178 | },
179 | "symfony/polyfill-php72": {
180 | "version": "v1.10.0"
181 | },
182 | "symfony/polyfill-php73": {
183 | "version": "v1.11.0"
184 | },
185 | "symfony/process": {
186 | "version": "v3.4.19"
187 | },
188 | "symfony/property-access": {
189 | "version": "v4.0.4"
190 | },
191 | "symfony/routing": {
192 | "version": "4.0",
193 | "recipe": {
194 | "repo": "github.com/symfony/recipes",
195 | "branch": "master",
196 | "version": "4.0",
197 | "ref": "cda8b550123383d25827705d05a42acf6819fe4e"
198 | }
199 | },
200 | "symfony/security-core": {
201 | "version": "v4.0.4"
202 | },
203 | "symfony/security-csrf": {
204 | "version": "v4.0.4"
205 | },
206 | "symfony/service-contracts": {
207 | "version": "v1.1.5"
208 | },
209 | "symfony/translation": {
210 | "version": "3.3",
211 | "recipe": {
212 | "repo": "github.com/symfony/recipes",
213 | "branch": "master",
214 | "version": "3.3",
215 | "ref": "1fb02a6e1c8f3d4232cce485c9afa868d63b115a"
216 | }
217 | },
218 | "symfony/translation-contracts": {
219 | "version": "v1.1.5"
220 | },
221 | "symfony/validator": {
222 | "version": "v4.0.4"
223 | },
224 | "symfony/var-dumper": {
225 | "version": "v4.0.4"
226 | },
227 | "symfony/var-exporter": {
228 | "version": "v4.2.0"
229 | },
230 | "symfony/webpack-encore-pack": {
231 | "version": "1.0",
232 | "recipe": {
233 | "repo": "github.com/symfony/recipes",
234 | "branch": "master",
235 | "version": "1.0",
236 | "ref": "a2f276eff6e95ca94be135d2d3e5c1247c6f8807"
237 | }
238 | },
239 | "symfony/yaml": {
240 | "version": "v4.0.4"
241 | }
242 | }
243 |
--------------------------------------------------------------------------------
/tests/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phplancer/symfony-form/a8146fe6c44c366b04af6a99b18d54bda7695179/tests/.gitignore
--------------------------------------------------------------------------------
/translations/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phplancer/symfony-form/a8146fe6c44c366b04af6a99b18d54bda7695179/translations/.gitignore
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var Encore = require('@symfony/webpack-encore');
2 |
3 | Encore
4 | // the project directory where compiled assets will be stored
5 | .setOutputPath('docs/build')
6 | // the public path used by the web server to access the previous directory
7 | .setPublicPath('/build')
8 | .cleanupOutputBeforeBuild()
9 | .enableSourceMaps(!Encore.isProduction())
10 | // uncomment to create hashed filenames (e.g. app.abc123.css)
11 | // .enableVersioning(Encore.isProduction())
12 |
13 | // uncomment to define the assets of the project
14 | .addEntry('js/app', './assets/js/App.jsx')
15 | .addStyleEntry('css/app', './assets/scss/app.scss')
16 |
17 | .enableSassLoader()
18 | .enableReactPreset()
19 |
20 | // first, install any presets you want to use (e.g. yarn add babel-preset-es2017)
21 | // then, modify the default Babel configuration
22 | .configureBabel(function(babelConfig) {
23 | // add additional presets
24 | babelConfig.presets.push('es2017');
25 |
26 | // no plugins are added by default, but you can add some
27 | // babelConfig.plugins.push('styled-jsx/babel');
28 | })
29 | ;
30 |
31 | module.exports = Encore.getWebpackConfig();
32 |
--------------------------------------------------------------------------------