@@ -876,6 +876,7 @@ function () {
876876 var rawData = Object ( _utils__WEBPACK_IMPORTED_MODULE_0__ [ "saferEval" ] ) ( this . el . getAttribute ( 'x-data' ) , { } ) ;
877877 this . data = this . wrapDataInObservable ( rawData ) ;
878878 this . initialize ( ) ;
879+ this . listenForNewElementsToInitialize ( ) ;
879880 }
880881
881882 _createClass ( Component , [ {
@@ -915,73 +916,107 @@ function () {
915916 var _this = this ;
916917
917918 Object ( _utils__WEBPACK_IMPORTED_MODULE_0__ [ "walkSkippingNestedComponents" ] ) ( this . el , function ( el ) {
918- Object ( _utils__WEBPACK_IMPORTED_MODULE_0__ [ "getXAttrs" ] ) ( el ) . forEach ( function ( _ref ) {
919- var type = _ref . type ,
920- value = _ref . value ,
921- modifiers = _ref . modifiers ,
922- expression = _ref . expression ;
919+ _this . initializeElement ( el ) ;
920+ } ) ;
921+ }
922+ } , {
923+ key : "initializeElement" ,
924+ value : function initializeElement ( el ) {
925+ var _this2 = this ;
923926
924- switch ( type ) {
925- case 'on' :
926- var event = value ;
927+ Object ( _utils__WEBPACK_IMPORTED_MODULE_0__ [ "getXAttrs" ] ) ( el ) . forEach ( function ( _ref ) {
928+ var type = _ref . type ,
929+ value = _ref . value ,
930+ modifiers = _ref . modifiers ,
931+ expression = _ref . expression ;
927932
928- _this . registerListener ( el , event , modifiers , expression ) ;
933+ switch ( type ) {
934+ case 'on' :
935+ var event = value ;
929936
930- break ;
937+ _this2 . registerListener ( el , event , modifiers , expression ) ;
931938
932- case 'model' :
933- // If the element we are binding to is a select, a radio, or checkbox
934- // we'll listen for the change event instead of the "input" event.
935- var event = el . tagName . toLowerCase ( ) === 'select' || [ 'checkbox' , 'radio' ] . includes ( el . type ) || modifiers . includes ( 'lazy' ) ? 'change' : 'input' ;
939+ break ;
936940
937- var listenerExpression = _this . generateExpressionForXModelListener ( el , modifiers , expression ) ;
941+ case 'model' :
942+ // If the element we are binding to is a select, a radio, or checkbox
943+ // we'll listen for the change event instead of the "input" event.
944+ var event = el . tagName . toLowerCase ( ) === 'select' || [ 'checkbox' , 'radio' ] . includes ( el . type ) || modifiers . includes ( 'lazy' ) ? 'change' : 'input' ;
938945
939- _this . registerListener ( el , event , modifiers , listenerExpression ) ;
946+ var listenerExpression = _this2 . generateExpressionForXModelListener ( el , modifiers , expression ) ;
940947
941- var attrName = 'value' ;
948+ _this2 . registerListener ( el , event , modifiers , listenerExpression ) ;
942949
943- var _this$evaluateReturnE = _this . evaluateReturnExpression ( expression ) ,
944- output = _this$evaluateReturnE . output ;
950+ var attrName = 'value' ;
945951
946- _this . updateAttributeValue ( el , attrName , output ) ;
952+ var _this2$evaluateReturn = _this2 . evaluateReturnExpression ( expression ) ,
953+ output = _this2$evaluateReturn . output ;
947954
948- break ;
955+ _this2 . updateAttributeValue ( el , attrName , output ) ;
949956
950- case 'bind' :
951- var attrName = value ;
957+ break ;
952958
953- var _this$evaluateReturnE2 = _this . evaluateReturnExpression ( expression ) ,
954- output = _this$evaluateReturnE2 . output ;
959+ case 'bind' :
960+ var attrName = value ;
955961
956- _this . updateAttributeValue ( el , attrName , output ) ;
962+ var _this2$evaluateReturn2 = _this2 . evaluateReturnExpression ( expression ) ,
963+ output = _this2$evaluateReturn2 . output ;
957964
958- break ;
965+ _this2 . updateAttributeValue ( el , attrName , output ) ;
959966
960- case 'text' :
961- var _this$evaluateReturnE3 = _this . evaluateReturnExpression ( expression ) ,
962- output = _this$evaluateReturnE3 . output ;
967+ break ;
963968
964- _this . updateTextValue ( el , output ) ;
969+ case 'text' :
970+ var _this2$evaluateReturn3 = _this2 . evaluateReturnExpression ( expression ) ,
971+ output = _this2$evaluateReturn3 . output ;
965972
966- break ;
973+ _this2 . updateTextValue ( el , output ) ;
967974
968- case 'show' :
969- var _this$evaluateReturnE4 = _this . evaluateReturnExpression ( expression ) ,
970- output = _this$evaluateReturnE4 . output ;
975+ break ;
971976
972- _this . updateVisibility ( el , output ) ;
977+ case 'show' :
978+ var _this2$evaluateReturn4 = _this2 . evaluateReturnExpression ( expression ) ,
979+ output = _this2$evaluateReturn4 . output ;
973980
974- break ;
981+ _this2 . updateVisibility ( el , output ) ;
975982
976- case 'cloak' :
977- el . removeAttribute ( 'x-cloak' ) ;
978- break ;
983+ break ;
979984
980- default :
981- break ;
985+ case 'cloak' :
986+ el . removeAttribute ( 'x-cloak' ) ;
987+ break ;
988+
989+ default :
990+ break ;
991+ }
992+ } ) ;
993+ }
994+ } , {
995+ key : "listenForNewElementsToInitialize" ,
996+ value : function listenForNewElementsToInitialize ( ) {
997+ var _this3 = this ;
998+
999+ var targetNode = this . el ;
1000+ var observerOptions = {
1001+ childList : true ,
1002+ attributes : false ,
1003+ subtree : true
1004+ } ;
1005+ var observer = new MutationObserver ( function ( mutations ) {
1006+ for ( var i = 0 ; i < mutations . length ; i ++ ) {
1007+ if ( mutations [ i ] . addedNodes . length > 0 ) {
1008+ mutations [ i ] . addedNodes . forEach ( function ( node ) {
1009+ if ( node . nodeType !== 1 ) return ;
1010+ if ( node . matches ( '[x-data]' ) ) return ;
1011+
1012+ if ( Object ( _utils__WEBPACK_IMPORTED_MODULE_0__ [ "getXAttrs" ] ) ( node ) . length > 0 ) {
1013+ _this3 . initializeElement ( node ) ;
1014+ }
1015+ } ) ;
9821016 }
983- } ) ;
1017+ }
9841018 } ) ;
1019+ observer . observe ( targetNode , observerOptions ) ;
9851020 }
9861021 } , {
9871022 key : "refresh" ,
@@ -1091,7 +1126,7 @@ function () {
10911126 } , {
10921127 key : "registerListener" ,
10931128 value : function registerListener ( el , event , modifiers , expression ) {
1094- var _this2 = this ;
1129+ var _this4 = this ;
10951130
10961131 if ( modifiers . includes ( 'away' ) ) {
10971132 var handler = function handler ( e ) {
@@ -1101,7 +1136,7 @@ function () {
11011136 if ( el . offsetWidth < 1 && el . offsetHeight < 1 ) return ; // Now that we are sure the element is visible, AND the click
11021137 // is from outside it, let's run the expression.
11031138
1104- _this2 . runListenerHandler ( expression , e ) ;
1139+ _this4 . runListenerHandler ( expression , e ) ;
11051140
11061141 if ( modifiers . includes ( 'once' ) ) {
11071142 document . removeEventListener ( event , handler ) ;
@@ -1117,7 +1152,7 @@ function () {
11171152 if ( modifiers . includes ( 'prevent' ) ) e . preventDefault ( ) ;
11181153 if ( modifiers . includes ( 'stop' ) ) e . stopPropagation ( ) ;
11191154
1120- _this2 . runListenerHandler ( expression , e ) ;
1155+ _this4 . runListenerHandler ( expression , e ) ;
11211156
11221157 if ( modifiers . includes ( 'once' ) ) {
11231158 node . removeEventListener ( event , _handler ) ;
@@ -1255,7 +1290,7 @@ function () {
12551290 } , {
12561291 key : "getRefsProxy" ,
12571292 value : function getRefsProxy ( ) {
1258- var self = this ; // One of the goals of this project is to not hold elements in memory, but rather re-evaluate
1293+ var self = this ; // One of the goals of this is to not hold elements in memory, but rather re-evaluate
12591294 // the DOM when the system needs something from it. This way, the framework is flexible and
12601295 // friendly to outside DOM changes from libraries like Vue/Livewire.
12611296 // For this reason, I'm using an "on-demand" proxy to fake a "$refs" object.
@@ -1301,7 +1336,7 @@ __webpack_require__.r(__webpack_exports__);
13011336/* @flow */
13021337
13031338
1304- var projectX = {
1339+ var Alpine = {
13051340 start : function start ( ) {
13061341 var _this = this ;
13071342
@@ -1380,12 +1415,12 @@ var projectX = {
13801415 }
13811416} ;
13821417
1383- if ( ! window . projectX && ! Object ( _utils__WEBPACK_IMPORTED_MODULE_2__ [ "isTesting" ] ) ( ) ) {
1384- window . projectX = projectX ;
1385- window . projectX . start ( ) ;
1418+ if ( ! window . Alpine && ! Object ( _utils__WEBPACK_IMPORTED_MODULE_2__ [ "isTesting" ] ) ( ) ) {
1419+ window . Alpine = Alpine ;
1420+ window . Alpine . start ( ) ;
13861421}
13871422
1388- /* harmony default export */ __webpack_exports__ [ "default" ] = ( projectX ) ;
1423+ /* harmony default export */ __webpack_exports__ [ "default" ] = ( Alpine ) ;
13891424
13901425/***/ } ) ,
13911426
@@ -1502,7 +1537,7 @@ function getXAttrs(el, type) {
15021537/*! no static exports found */
15031538/***/ ( function ( module , exports , __webpack_require__ ) {
15041539
1505- module . exports = __webpack_require__ ( /*! /Users/calebporzio/Documents/Code/sites/project-x /src/index.js */ "./src/index.js" ) ;
1540+ module . exports = __webpack_require__ ( /*! /Users/calebporzio/Documents/Code/sites/alpine /src/index.js */ "./src/index.js" ) ;
15061541
15071542
15081543/***/ } )
0 commit comments