module.js 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. /**
  2. * Import Angular
  3. */
  4. import { ANALYZE_FOR_ENTRY_COMPONENTS, APP_INITIALIZER, ComponentFactoryResolver, Inject, Injector, NgModule, NgZone, Optional } from '@angular/core';
  5. import { APP_BASE_HREF, HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, PlatformLocation } from '@angular/common';
  6. import { DOCUMENT, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
  7. import { FormsModule, ReactiveFormsModule } from '@angular/forms';
  8. import { CommonModule } from '@angular/common';
  9. /**
  10. * Global Providers
  11. */
  12. import { App } from './components/app/app';
  13. import { AppRootToken } from './components/app/app-root';
  14. import { Config, ConfigToken, setupConfig } from './config/config';
  15. import { DeepLinker, setupDeepLinker } from './navigation/deep-linker';
  16. import { DomController } from './platform/dom-controller';
  17. import { Events, setupProvideEvents } from './util/events';
  18. import { Form } from './util/form';
  19. import { GestureController } from './gestures/gesture-controller';
  20. import { IonicGestureConfig } from './gestures/gesture-config';
  21. import { Haptic } from './tap-click/haptic';
  22. import { Keyboard } from './platform/keyboard';
  23. import { LAZY_LOADED_TOKEN, ModuleLoader, provideModuleLoader, setupPreloading } from './util/module-loader';
  24. import { NgModuleLoader } from './util/ng-module-loader';
  25. import { Platform, setupPlatform } from './platform/platform';
  26. import { PlatformConfigToken, providePlatformConfigs } from './platform/platform-registry';
  27. import { TapClick, setupTapClick } from './tap-click/tap-click';
  28. import { registerModeConfigs } from './config/mode-registry';
  29. import { TransitionController } from './transitions/transition-controller';
  30. import { DeepLinkConfigToken, UrlSerializer, setupUrlSerializer } from './navigation/url-serializer';
  31. /**
  32. * Import Components/Directives/Etc
  33. */
  34. import { ActionSheetCmp } from './components/action-sheet/action-sheet-component';
  35. import { ActionSheetController } from './components/action-sheet/action-sheet-controller';
  36. import { AlertCmp } from './components/alert/alert-component';
  37. import { AlertController } from './components/alert/alert-controller';
  38. import { ClickBlock } from './components/app/click-block';
  39. import { IonicApp } from './components/app/app-root';
  40. import { OverlayPortal } from './components/app/overlay-portal';
  41. import { Avatar } from './components/avatar/avatar';
  42. import { Backdrop } from './components/backdrop/backdrop';
  43. import { Badge } from './components/badge/badge';
  44. import { Button } from './components/button/button';
  45. import { Card } from './components/card/card';
  46. import { CardContent } from './components/card/card-content';
  47. import { CardHeader } from './components/card/card-header';
  48. import { CardTitle } from './components/card/card-title';
  49. import { Checkbox } from './components/checkbox/checkbox';
  50. import { Chip } from './components/chip/chip';
  51. import { Content } from './components/content/content';
  52. import { DateTime } from './components/datetime/datetime';
  53. import { FabButton } from './components/fab/fab';
  54. import { FabContainer } from './components/fab/fab-container';
  55. import { FabList } from './components/fab/fab-list';
  56. import { Col } from './components/grid/col';
  57. import { Grid } from './components/grid/grid';
  58. import { Row } from './components/grid/row';
  59. import { Icon } from './components/icon/icon';
  60. import { Img } from './components/img/img';
  61. import { InfiniteScroll } from './components/infinite-scroll/infinite-scroll';
  62. import { InfiniteScrollContent } from './components/infinite-scroll/infinite-scroll-content';
  63. import { TextInput } from './components/input/input';
  64. import { Item } from './components/item/item';
  65. import { ItemContent } from './components/item/item-content';
  66. import { ItemDivider } from './components/item/item-divider';
  67. import { ItemGroup } from './components/item/item-group';
  68. import { ItemOptions } from './components/item/item-options';
  69. import { ItemReorder } from './components/item/item-reorder';
  70. import { ItemSliding } from './components/item/item-sliding';
  71. import { Reorder } from './components/item/reorder';
  72. import { Label } from './components/label/label';
  73. import { List } from './components/list/list';
  74. import { ListHeader } from './components/list/list-header';
  75. import { LoadingCmp } from './components/loading/loading-component';
  76. import { LoadingController } from './components/loading/loading-controller';
  77. import { Menu } from './components/menu/menu';
  78. import { MenuClose } from './components/menu/menu-close';
  79. import { MenuController } from './components/app/menu-controller';
  80. import { MenuToggle } from './components/menu/menu-toggle';
  81. import { ModalCmp } from './components/modal/modal-component';
  82. import { ModalController } from './components/modal/modal-controller';
  83. import { Nav } from './components/nav/nav';
  84. import { NavPop } from './components/nav/nav-pop';
  85. import { NavPopAnchor } from './components/nav/nav-pop-anchor';
  86. import { NavPush } from './components/nav/nav-push';
  87. import { NavPushAnchor } from './components/nav/nav-push-anchor';
  88. import { Note } from './components/note/note';
  89. import { Option } from './components/option/option';
  90. import { PickerCmp } from './components/picker/picker-component';
  91. import { PickerColumnCmp } from './components/picker/picker-column';
  92. import { PickerController } from './components/picker/picker-controller';
  93. import { PopoverCmp } from './components/popover/popover-component';
  94. import { PopoverController } from './components/popover/popover-controller';
  95. import { RadioButton } from './components/radio/radio-button';
  96. import { RadioGroup } from './components/radio/radio-group';
  97. import { Range } from './components/range/range';
  98. import { RangeKnob } from './components/range/range-knob';
  99. import { Refresher } from './components/refresher/refresher';
  100. import { RefresherContent } from './components/refresher/refresher-content';
  101. import { Scroll } from './components/scroll/scroll';
  102. import { Searchbar } from './components/searchbar/searchbar';
  103. import { Segment } from './components/segment/segment';
  104. import { Select } from './components/select/select';
  105. import { SelectPopover } from './components/select/select-popover-component';
  106. import { SegmentButton } from './components/segment/segment-button';
  107. import { ShowWhen } from './components/show-hide-when/show-when';
  108. import { HideWhen } from './components/show-hide-when/hide-when';
  109. import { Slide } from './components/slides/slide';
  110. import { Slides } from './components/slides/slides';
  111. import { Spinner } from './components/spinner/spinner';
  112. import { SplitPane } from './components/split-pane/split-pane';
  113. import { Tab } from './components/tabs/tab';
  114. import { TabButton } from './components/tabs/tab-button';
  115. import { TabHighlight } from './components/tabs/tab-highlight';
  116. import { Tabs } from './components/tabs/tabs';
  117. import { Thumbnail } from './components/thumbnail/thumbnail';
  118. import { ToastCmp } from './components/toast/toast-component';
  119. import { ToastController } from './components/toast/toast-controller';
  120. import { Toggle } from './components/toggle/toggle';
  121. import { Footer } from './components/toolbar/toolbar-footer';
  122. import { Header } from './components/toolbar/toolbar-header';
  123. import { Toolbar } from './components/toolbar/toolbar';
  124. import { ToolbarItem } from './components/toolbar/toolbar-item';
  125. import { ToolbarTitle } from './components/toolbar/toolbar-title';
  126. import { Navbar } from './components/toolbar/navbar';
  127. import { Typography } from './components/typography/typography';
  128. import { VirtualFooter } from './components/virtual-scroll/virtual-footer';
  129. import { VirtualHeader } from './components/virtual-scroll/virtual-header';
  130. import { VirtualItem } from './components/virtual-scroll/virtual-item';
  131. import { VirtualScroll } from './components/virtual-scroll/virtual-scroll';
  132. /**
  133. * @name IonicModule
  134. * @description
  135. * IonicModule is an [NgModule](https://angular.io/docs/ts/latest/guide/ngmodule.html) that bootstraps
  136. * an Ionic App. By passing a root component, IonicModule will make sure that all of the components,
  137. * directives, and providers from the framework are imported.
  138. *
  139. * Any configuration for the app can be passed as the second argument to `forRoot`. This can be any
  140. * valid property from the [Config](/docs/api/config/Config/).
  141. *
  142. * @usage
  143. * ```ts
  144. * import { NgModule } from '@angular/core';
  145. *
  146. * import { IonicApp, IonicModule } from 'ionic-angular';
  147. *
  148. * import { MyApp } from './app.component';
  149. * import { HomePage } from '../pages/home/home';
  150. *
  151. * @NgModule({
  152. * declarations: [
  153. * MyApp,
  154. * HomePage
  155. * ],
  156. * imports: [
  157. * BrowserModule,
  158. * IonicModule.forRoot(MyApp, {
  159. *
  160. * })
  161. * ],
  162. * bootstrap: [IonicApp],
  163. * entryComponents: [
  164. * MyApp,
  165. * HomePage
  166. * ],
  167. * providers: []
  168. * })
  169. * export class AppModule {}
  170. * ```
  171. */
  172. var IonicModule = (function () {
  173. function IonicModule() {
  174. }
  175. /**
  176. * Set the root app component for you IonicModule
  177. * @param {any} appRoot The root AppComponent for this app.
  178. * @param {any} config Config Options for the app. Accepts any config property.
  179. * @param {any} deepLinkConfig Any configuration needed for the Ionic Deeplinker.
  180. */
  181. IonicModule.forRoot = function (appRoot, config, deepLinkConfig) {
  182. if (config === void 0) { config = null; }
  183. if (deepLinkConfig === void 0) { deepLinkConfig = null; }
  184. return {
  185. ngModule: IonicModule,
  186. providers: [
  187. // useValue: bootstrap values
  188. { provide: AppRootToken, useValue: appRoot },
  189. { provide: ConfigToken, useValue: config },
  190. { provide: DeepLinkConfigToken, useValue: deepLinkConfig },
  191. { provide: APP_BASE_HREF, useValue: '/' },
  192. // useFactory: user values
  193. { provide: PlatformConfigToken, useFactory: providePlatformConfigs },
  194. // useFactory: ionic core providers
  195. { provide: Platform, useFactory: setupPlatform, deps: [DOCUMENT, PlatformConfigToken, NgZone] },
  196. { provide: Config, useFactory: setupConfig, deps: [ConfigToken, Platform] },
  197. // useFactory: ionic app initializers
  198. { provide: APP_INITIALIZER, useFactory: registerModeConfigs, deps: [Config], multi: true },
  199. { provide: APP_INITIALIZER, useFactory: setupProvideEvents, deps: [Platform, DomController], multi: true },
  200. { provide: APP_INITIALIZER, useFactory: setupTapClick, deps: [Config, Platform, DomController, App, GestureController], multi: true },
  201. { provide: APP_INITIALIZER, useFactory: setupPreloading, deps: [Config, DeepLinkConfigToken, ModuleLoader, NgZone], multi: true },
  202. // useClass
  203. { provide: HAMMER_GESTURE_CONFIG, useClass: IonicGestureConfig },
  204. // useValue
  205. { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: appRoot, multi: true },
  206. // ionic providers
  207. ActionSheetController,
  208. AlertController,
  209. App,
  210. DomController,
  211. Events,
  212. Form,
  213. GestureController,
  214. Haptic,
  215. Keyboard,
  216. LoadingController,
  217. Location,
  218. MenuController,
  219. ModalController,
  220. NgModuleLoader,
  221. PickerController,
  222. PopoverController,
  223. TapClick,
  224. ToastController,
  225. TransitionController,
  226. { provide: ModuleLoader, useFactory: provideModuleLoader, deps: [NgModuleLoader, Injector] },
  227. { provide: LocationStrategy, useFactory: provideLocationStrategy, deps: [PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], Config] },
  228. { provide: UrlSerializer, useFactory: setupUrlSerializer, deps: [App, DeepLinkConfigToken] },
  229. { provide: DeepLinker, useFactory: setupDeepLinker, deps: [App, UrlSerializer, Location, ModuleLoader, ComponentFactoryResolver] },
  230. ]
  231. };
  232. };
  233. IonicModule.decorators = [
  234. { type: NgModule, args: [{
  235. declarations: [
  236. ActionSheetCmp,
  237. AlertCmp,
  238. ClickBlock,
  239. IonicApp,
  240. OverlayPortal,
  241. Avatar,
  242. Backdrop,
  243. Badge,
  244. Button,
  245. Card,
  246. CardContent,
  247. CardHeader,
  248. CardTitle,
  249. Checkbox,
  250. Chip,
  251. Col,
  252. Content,
  253. DateTime,
  254. FabButton,
  255. FabContainer,
  256. FabList,
  257. Grid,
  258. Img,
  259. Icon,
  260. InfiniteScroll,
  261. InfiniteScrollContent,
  262. Item,
  263. ItemContent,
  264. ItemDivider,
  265. ItemGroup,
  266. ItemOptions,
  267. ItemReorder,
  268. ItemSliding,
  269. Label,
  270. List,
  271. ListHeader,
  272. Reorder,
  273. LoadingCmp,
  274. Menu,
  275. MenuClose,
  276. MenuToggle,
  277. ModalCmp,
  278. Nav,
  279. NavPop,
  280. NavPopAnchor,
  281. NavPush,
  282. NavPushAnchor,
  283. Note,
  284. Option,
  285. PickerCmp,
  286. PickerColumnCmp,
  287. PopoverCmp,
  288. RadioButton,
  289. RadioGroup,
  290. Range,
  291. RangeKnob,
  292. Refresher,
  293. RefresherContent,
  294. Row,
  295. Scroll,
  296. Searchbar,
  297. Segment,
  298. SegmentButton,
  299. Select,
  300. SelectPopover,
  301. ShowWhen,
  302. HideWhen,
  303. Slide,
  304. Slides,
  305. Spinner,
  306. SplitPane,
  307. Tab,
  308. TabButton,
  309. TabHighlight,
  310. Tabs,
  311. TextInput,
  312. Thumbnail,
  313. ToastCmp,
  314. Toggle,
  315. Footer,
  316. Header,
  317. Toolbar,
  318. ToolbarItem,
  319. ToolbarTitle,
  320. Navbar,
  321. Typography,
  322. VirtualFooter,
  323. VirtualHeader,
  324. VirtualItem,
  325. VirtualScroll
  326. ],
  327. imports: [
  328. CommonModule,
  329. FormsModule,
  330. ReactiveFormsModule,
  331. ],
  332. exports: [
  333. CommonModule,
  334. FormsModule,
  335. ReactiveFormsModule,
  336. ActionSheetCmp,
  337. AlertCmp,
  338. ClickBlock,
  339. IonicApp,
  340. OverlayPortal,
  341. Avatar,
  342. Backdrop,
  343. Badge,
  344. Button,
  345. Card,
  346. CardContent,
  347. CardHeader,
  348. CardTitle,
  349. Checkbox,
  350. Chip,
  351. Col,
  352. Content,
  353. DateTime,
  354. FabButton,
  355. FabContainer,
  356. FabList,
  357. Grid,
  358. Img,
  359. Icon,
  360. InfiniteScroll,
  361. InfiniteScrollContent,
  362. Item,
  363. ItemContent,
  364. ItemDivider,
  365. ItemGroup,
  366. ItemOptions,
  367. ItemReorder,
  368. ItemSliding,
  369. Label,
  370. List,
  371. ListHeader,
  372. Reorder,
  373. LoadingCmp,
  374. Menu,
  375. MenuClose,
  376. MenuToggle,
  377. ModalCmp,
  378. Nav,
  379. NavPop,
  380. NavPopAnchor,
  381. NavPush,
  382. NavPushAnchor,
  383. Note,
  384. Option,
  385. PickerCmp,
  386. PickerColumnCmp,
  387. PopoverCmp,
  388. RadioButton,
  389. RadioGroup,
  390. Range,
  391. RangeKnob,
  392. Refresher,
  393. RefresherContent,
  394. Row,
  395. Scroll,
  396. Searchbar,
  397. Segment,
  398. SegmentButton,
  399. Select,
  400. SelectPopover,
  401. ShowWhen,
  402. HideWhen,
  403. Slide,
  404. Slides,
  405. Spinner,
  406. SplitPane,
  407. Tab,
  408. TabButton,
  409. TabHighlight,
  410. Tabs,
  411. TextInput,
  412. Thumbnail,
  413. ToastCmp,
  414. Toggle,
  415. Footer,
  416. Header,
  417. Toolbar,
  418. ToolbarItem,
  419. ToolbarTitle,
  420. Navbar,
  421. Typography,
  422. VirtualFooter,
  423. VirtualHeader,
  424. VirtualItem,
  425. VirtualScroll
  426. ],
  427. entryComponents: [
  428. ActionSheetCmp,
  429. AlertCmp,
  430. IonicApp,
  431. LoadingCmp,
  432. ModalCmp,
  433. PickerCmp,
  434. PopoverCmp,
  435. SelectPopover,
  436. ToastCmp
  437. ]
  438. },] },
  439. ];
  440. /** @nocollapse */
  441. IonicModule.ctorParameters = function () { return []; };
  442. return IonicModule;
  443. }());
  444. export { IonicModule };
  445. /**
  446. * @name IonicPageModule
  447. * @description
  448. * IonicPageModule is an [NgModule](https://angular.io/docs/ts/latest/guide/ngmodule.html) that
  449. * bootstraps a child [IonicPage](../navigation/IonicPage/) in order to set up routing.
  450. *
  451. * @usage
  452. * ```ts
  453. * import { NgModule } from '@angular/core';
  454. *
  455. * import { IonicPageModule } from 'ionic-angular';
  456. *
  457. * import { HomePage } from './home';
  458. *
  459. * @NgModule({
  460. * declarations: [
  461. * HomePage
  462. * ],
  463. * imports: [
  464. * IonicPageModule.forChild(HomePage)
  465. * ],
  466. * entryComponents: [
  467. * HomePage
  468. * ]
  469. * })
  470. * export class HomePageModule { }
  471. * ```
  472. */
  473. var IonicPageModule = (function () {
  474. function IonicPageModule() {
  475. }
  476. IonicPageModule.forChild = function (page) {
  477. return {
  478. ngModule: IonicPageModule,
  479. providers: [
  480. { provide: LAZY_LOADED_TOKEN, useValue: page },
  481. { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: page, multi: true },
  482. ]
  483. };
  484. };
  485. IonicPageModule.decorators = [
  486. { type: NgModule, args: [{
  487. imports: [IonicModule],
  488. exports: [IonicModule]
  489. },] },
  490. ];
  491. /** @nocollapse */
  492. IonicPageModule.ctorParameters = function () { return []; };
  493. return IonicPageModule;
  494. }());
  495. export { IonicPageModule };
  496. /**
  497. * @hidden
  498. */
  499. export function provideLocationStrategy(platformLocationStrategy, baseHref, config) {
  500. return config.get('locationStrategy') === 'path' ?
  501. new PathLocationStrategy(platformLocationStrategy, baseHref) :
  502. new HashLocationStrategy(platformLocationStrategy, baseHref);
  503. }
  504. //# sourceMappingURL=module.js.map