{"bugs":{"url":"https://github.com/material-components/material-components-web/issues"},"dist":{"shasum":"492374fc1e94ce53fdc1812671f1977d5df23d9f","tarball":"https://registry.npmjs.org/@material/auto-init/-/auto-init-3.0.0-alpha.0.tgz","fileCount":14,"integrity":"sha512-oNbf4sBdd/hNQMOpqjteFqCJH72iebI+0dfZYp2hVX2gWXWn30WoUk538KyqOjblGQhFpdf13he3crcaZEstbA==","signatures":[{"sig":"MEUCIQC8QqNqXyfSvNFOy2vYmyv5h5dF6pzyoi4KajXBcGo65gIgSVEi2yzqVPDKpEI/bSD5WUzeMFTznhiHTWXKZE0wkYI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAHpJCRA9TVsSAnZWagAAWBQQAKKmVx905xrrVT1ga7JN\nK5Rzrctu7miNhbkc+YXk3iD7ySgHPHLiL78J2mq487ArqWxa6JsDWNKou09h\nq/WwoU4VpRQ0IdMsIRkVXaZXeGqe0SGqaamhk6uK6kJy2mGH4DaC7ZYeu0q/\nH+P1vG4fG9zrXl7QXTF3mw4mgkm/tfGXAt4z8igolzXGSgFoXsUA+93oAHBo\nbGHxayHyZ9B0CdRWKNaZdgav+fbuBnD9ErehyuoMjqNd/R4UBnKspwqYfPyd\nRmz0C1OHhBIPzaHu9vk/Y8nWkjKYuNT4ewhCgT8oxsTMbBzJ6QAnkGbwZpY1\nWLQ5AjL44v6bcbGKk2BAWGQpTyLtG9fx7rk7pcTk+m65UkG14YXeXW/xzou2\n8buWjTuYn62MXPsXUEPwNe5GDm608uE+leK579pKW49Wx2TuJxscj4y9I9nl\nNnElvdT/axyJTeSq/EuG6aGYI8/UfVcbv8Lxudffltgede9mgZM2/kSFrjRw\niXUDj/MQTruW9isrkkt5ONK1Zq8JrXxR1AU3/DuYtaaBkG/m0RCE3U4N8l6m\ni4ou4Ng4/hVbWB/mJFItXPCCwbQaLe7CdX/k9hU3jFraFO5wnJp9XvrHnJvk\nhkJHFkcUwpvcv8OVM3MdSRfog8weVSkAeP8jBESyPgg/utyxEkqRrsgHu+sf\n56ey\r\n=tlZO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/mdc.autoInit.js","name":"@material/auto-init","types":"dist/mdc.autoInit.d.ts","module":"index.js","readme":"<!--docs:\ntitle: \"Auto Init\"\nlayout: detail\nsection: components\nexcerpt: \"Utilities for declarative, DOM-based initialization of components on simple web sites.\"\npath: /catalog/auto-init/\n-->\n\n# Auto Init\n\n`mdc-auto-init` is a utility package that provides declarative, DOM-based method of initialization\nfor MDC Web components on simple web sites. Note that for more advanced use-cases and complex sites,\nmanual instantiation of components will give you more flexibility. However, `mdc-auto-init` is great\nfor static websites, prototypes, and other use-cases where simplicity and convenience is most\nappropriate.\n\n## Installation\n\n```\nnpm install @material/auto-init\n```\n\n## Usage\n\n### Using as part of `material-components-web`\n\nIf you are using mdc-auto-init as part of the [material-components-web](../material-components-web)\npackage, simply write the necessary DOM needed for a component, and attach a `data-mdc-auto-init`\nattribute to the root element with its value set to the component's JavaScript class name (e.g.,\n`MDCTextField`). Then, after writing the markup, simply insert a script tag that calls\n`mdc.autoInit()`. Make sure you call `mdc.autoInit()` after all scripts are loaded so it works\nproperly.\n\n```html\n<div class=\"mdc-text-field\" data-mdc-auto-init=\"MDCTextField\">\n  <input class=\"mdc-text-field__input\" type=\"text\" id=\"input\">\n  <label for=\"input\" class=\"mdc-floating-label\">Input Label</label>\n  <div class=\"mdc-line-ripple\"></div>\n</div>\n\n<!-- at the bottom of the page -->\n<script type=\"text/javascript\">\n  window.mdc.autoInit();\n</script>\n```\n\nThis will attach an [MDCTextField](../mdc-textfield) instance to the root `<div>` element.\n\n#### Accessing the component instance\n\nWhen `mdc-auto-init` attaches a component to an element, it assign that instance to the element\nusing a property whose name is the value of `data-mdc-auto-init`. For example, given\n\n```html\n<div class=\"mdc-text-field\" data-mdc-auto-init=\"MDCTextField\">\n  <input class=\"mdc-text-field__input\" type=\"text\" id=\"input\">\n  <label for=\"input\" class=\"mdc-floating-label\">Input Label</label>\n  <div class=\"mdc-line-ripple\"></div>\n</div>\n```\n\nOnce `mdc.autoInit()` is called, you can access the component instance via an `MDCTextField`\nproperty on that element.\n\n```js\ndocument.querySelector('.mdc-text-field').MDCTextField.disabled = true;\n```\n\n#### Calling subsequent `mdc.autoInit()`\n\nIf you decide to add new components into the DOM after the initial `mdc.autoInit()`, you can make subsequent calls to `mdc.autoInit()`. This will not reinitialize existing components. This works since mdc-auto-init will add the `data-mdc-auto-init-state=\"initialized\"` attribute, which tracks if the component has already been initialized. After calling `mdc.autoInit()` your component will then look like:\n\n```html\n<div class=\"mdc-text-field\" data-mdc-auto-init=\"MDCTextField\" data-mdc-auto-init-state=\"initialized\">\n  ...\n</div>\n```\n\n### Using as a standalone module\n\n#### Registering Components\n\nIf you are using `mdc-auto-init` outside of `material-components-web`, you must manually provide a\nmapping between `data-mdc-auto-init` attribute values and the components which they map to. This can\nbe achieved via `mdcAutoInit.register`.\n\n```js\nimport mdcAutoInit from '@material/auto-init';\nimport {MDCTextField} from '@material/textfield';\n\nmdcAutoInit.register('MDCTextField', MDCTextField);\n```\n\n`mdcAutoInit.register()` tells `mdc-auto-init` that when it comes across an element with a\n`data-mdc-auto-init` attribute set to `\"MDCTextField\"`, it should initialize an `MDCTextField`\ninstance on that element. The `material-components-web` package does this for all components for\nconvenience.\n\nAlso note that a component can be mapped to any string, not necessarily the name of its constructor.\n\n```js\nimport mdcAutoInit from '@material/auto-init';\nimport {MDCTextField} from '@material/textfield';\n\nmdcAutoInit.register('My amazing text field!!!', MDCTextField);\n```\n\n```html\n<div class=\"mdc-text-field\" data-mdc-auto-init=\"My amazing text field!!!\">\n  <!-- ... -->\n</div>\n<script>window.mdc.autoInit();</script>\n```\n\n### De-registering components\n\nAny component can be deregistered by calling `mdcAutoInit.deregister` with the name used to register\nthe component.\n\n```js\nmdcAutoInit.deregister('MDCTextField');\n```\n\nThis will simply remove the name -> component mapping. It will _not_ affect any already-instantiated\ncomponents on the page.\n\nTo unregister all name -> component mappings, you can use `mdcAutoInit.deregisterAll()`.\n\n## How `mdc-auto-init` works\n\n`mdc-auto-init` maintains a registry object which maps string identifiers, or **names**, to\ncomponent constructors. When the default exported function - `mdcAutoInit()` - is called,\n`mdc-auto-init` queries the DOM for all elements with a `data-mdc-auto-init` attribute. For each\nelement returned, the following steps are taken:\n\n1. If the `data-mdc-auto-init` attribute does not have a value associated with it, throw an error\n2. If the value of `data-mdc-auto-init` cannot be found in the registry, throw an error\n3. If the element has an existing property whose name is the value of `data-mdc-auto-init`, it is\n   assumed to have already been initialized. Therefore it is skipped, and a warning will be logged\n   to the console (this behavior can be overridden).\n4. Let `Ctor` be the component constructor associated with the given name in the register\n5. Let `instance` be the result of calling `Ctor.attachTo()` and passing in the element as an\n   argument.\n6. Create a non-writable, non-enumerable property on the node whose name is the value of\n   `data-mdc-auto-init` and whose value is `instance`.\n\n### Initializing only a certain part of the page\n\nBy default, `mdc-auto-init` will query the entire document to figure out which components to\ninitialize. To override this behavior, you can pass in an optional `root` first argument specifying\nthe root node whose children will be queried for instantiation.\n\n```html\n<div id=\"mdc-section\">\n  <!-- MDC Web Components, etc. -->\n</div>\n<script>window.mdc.autoInit(document.getElementById('mdc-section'));</script>\n```\n\nIn the above example, only elements within `<div id=\"mdc-section\">` will be queried.\n\n### Calling autoInit() multiple times\n\nBy default, `mdc-auto-init` only expects to be called once, at page-load time. However, there may be\ncertain scenarios where one may want to use `mdc-auto-init` and may still need to call it multiple\ntimes, such as on a Wordpress site that contains an infinitely-scrolling list of new blog post\nelements containing MDC Web components. `mdcAutoInit()` takes an optional second argument which is the\nfunction used to warn users when a component is initialized multiple times. By default, this is just\n`console.warn()`. However, to skip over already-initialized components without logging a\nwarning, you could simply pass in a nop.\n\n```html\n<script>window.mdc.autoInit(/* root */ document, () => {});</script>\n```\n\nThis will suppress any warnings about already initialized elements.\n\n### Events\n\n#### MDCAutoInit:End\nTriggered when initialization of all components is complete.\n\n`document.addEventListener(\"MDCAutoInit:End\", () => {...});`\n","gitHead":"094e507fcfb488303e5adec97f7f985b30e8567e","license":"MIT","_npmUser":{"name":"abhiomkar","email":"abhiomkar@gmail.com"},"homepage":"https://github.com/material-components/material-components-web#readme","repository":{"url":"git+https://github.com/material-components/material-components-web.git","type":"git"},"_npmVersion":"lerna/3.14.1/node@v11.9.0+x64 (darwin)","description":"Declarative, easy-to-use auto-initialization for Material Components for the web","directories":{},"maintainers":[{"name":"abhiomkar","email":"abhiomkar@gmail.com"},{"name":"acdvorak","email":"acdvorak@gmail.com"},{"name":"aprigogin","email":"andrey.prigogin@gmail.com"},{"name":"azakus","email":"dfreedm2@gmail.com"},{"name":"bicknellr","email":"bicknellr@gmail.com"},{"name":"bonniez","email":"bonniez@google.com"},{"name":"bwobrien","email":"obrien.test@gmail.com"},{"name":"kfranqueiro","email":"kenneth.franqueiro@gmail.com"},{"name":"lynnjepsen","email":"lynnjepsen@google.com"},{"name":"material-admin","email":"lynnjepsen+npm@google.com"},{"name":"moog16","email":"mattgoo@gmail.com"},{"name":"patrickrodee","email":"prodee@google.com"},{"name":"williamernest","email":"williamernest@google.com"}],"sideEffects":false,"_nodeVersion":"11.9.0","dependencies":{"tslib":"^1.9.3","@material/base":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/auto-init_3.0.0-alpha.0_1560312393190_0.987722464224531","host":"s3://npm-registry-packages"},"_id":"@material/auto-init@3.0.0-alpha.0","version":"3.0.0-alpha.0"}