marko 6.0.90 → 6.0.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debug/dom.js +22 -0
 - package/dist/debug/dom.mjs +22 -0
 - package/dist/debug/html.js +40 -4
 - package/dist/debug/html.mjs +40 -4
 - package/dist/html.js +8 -8
 - package/dist/html.mjs +8 -8
 - package/dist/translator/index.js +17 -15
 - package/dist/translator/util/get-defined-binding-expression.d.ts +1 -1
 - package/dist/translator/util/references.d.ts +1 -1
 - package/package.json +1 -1
 
    
        package/dist/debug/dom.js
    CHANGED
    
    | 
         @@ -223,10 +223,24 @@ function createDelegator() { 
     | 
|
| 
       223 
223 
     | 
    
         
             
            }
         
     | 
| 
       224 
224 
     | 
    
         
             
            function handleDelegated(ev) {
         
     | 
| 
       225 
225 
     | 
    
         
             
              let target = !rendering && ev.target;
         
     | 
| 
      
 226 
     | 
    
         
            +
              if (true) {
         
     | 
| 
      
 227 
     | 
    
         
            +
                Object.defineProperty(ev, "currentTarget", {
         
     | 
| 
      
 228 
     | 
    
         
            +
                  configurable: true,
         
     | 
| 
      
 229 
     | 
    
         
            +
                  get() {
         
     | 
| 
      
 230 
     | 
    
         
            +
                    console.error(
         
     | 
| 
      
 231 
     | 
    
         
            +
                      "Event.currentTarget is not supported in Marko's delegated events. Instead use an element reference or the second parameter of the event handler."
         
     | 
| 
      
 232 
     | 
    
         
            +
                    );
         
     | 
| 
      
 233 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 234 
     | 
    
         
            +
                  }
         
     | 
| 
      
 235 
     | 
    
         
            +
                });
         
     | 
| 
      
 236 
     | 
    
         
            +
              }
         
     | 
| 
       226 
237 
     | 
    
         
             
              while (target) {
         
     | 
| 
       227 
238 
     | 
    
         
             
                target["$" + ev.type]?.(ev, target);
         
     | 
| 
       228 
239 
     | 
    
         
             
                target = ev.bubbles && !ev.cancelBubble && target.parentNode;
         
     | 
| 
       229 
240 
     | 
    
         
             
              }
         
     | 
| 
      
 241 
     | 
    
         
            +
              if (true) {
         
     | 
| 
      
 242 
     | 
    
         
            +
                delete ev.currentTarget;
         
     | 
| 
      
 243 
     | 
    
         
            +
              }
         
     | 
| 
       230 
244 
     | 
    
         
             
            }
         
     | 
| 
       231 
245 
     | 
    
         | 
| 
       232 
246 
     | 
    
         
             
            // src/dom/resolve-cursor-position.ts
         
     | 
| 
         @@ -1991,6 +2005,14 @@ function loop(nodeAccessor, renderer, forEach) { 
     | 
|
| 
       1991 
2005 
     | 
    
         
             
                const newMap = scope["LoopScopeMap:" /* LoopScopeMap */ + nodeAccessor] = /* @__PURE__ */ new Map();
         
     | 
| 
       1992 
2006 
     | 
    
         
             
                const newArray = scope["LoopScopeArray:" /* LoopScopeArray */ + nodeAccessor] = [];
         
     | 
| 
       1993 
2007 
     | 
    
         
             
                forEach(value, (key, args) => {
         
     | 
| 
      
 2008 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 2009 
     | 
    
         
            +
                    if (newMap.has(key)) {
         
     | 
| 
      
 2010 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 2011 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 2012 
     | 
    
         
            +
                        key
         
     | 
| 
      
 2013 
     | 
    
         
            +
                      );
         
     | 
| 
      
 2014 
     | 
    
         
            +
                    }
         
     | 
| 
      
 2015 
     | 
    
         
            +
                  }
         
     | 
| 
       1994 
2016 
     | 
    
         
             
                  const branch = oldMap?.get(key) || createAndSetupBranch(scope.$global, renderer, scope, parentNode);
         
     | 
| 
       1995 
2017 
     | 
    
         
             
                  params?.(branch, args);
         
     | 
| 
       1996 
2018 
     | 
    
         
             
                  newMap.set(key, branch);
         
     | 
    
        package/dist/debug/dom.mjs
    CHANGED
    
    | 
         @@ -123,10 +123,24 @@ function createDelegator() { 
     | 
|
| 
       123 
123 
     | 
    
         
             
            }
         
     | 
| 
       124 
124 
     | 
    
         
             
            function handleDelegated(ev) {
         
     | 
| 
       125 
125 
     | 
    
         
             
              let target = !rendering && ev.target;
         
     | 
| 
      
 126 
     | 
    
         
            +
              if (true) {
         
     | 
| 
      
 127 
     | 
    
         
            +
                Object.defineProperty(ev, "currentTarget", {
         
     | 
| 
      
 128 
     | 
    
         
            +
                  configurable: true,
         
     | 
| 
      
 129 
     | 
    
         
            +
                  get() {
         
     | 
| 
      
 130 
     | 
    
         
            +
                    console.error(
         
     | 
| 
      
 131 
     | 
    
         
            +
                      "Event.currentTarget is not supported in Marko's delegated events. Instead use an element reference or the second parameter of the event handler."
         
     | 
| 
      
 132 
     | 
    
         
            +
                    );
         
     | 
| 
      
 133 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 134 
     | 
    
         
            +
                  }
         
     | 
| 
      
 135 
     | 
    
         
            +
                });
         
     | 
| 
      
 136 
     | 
    
         
            +
              }
         
     | 
| 
       126 
137 
     | 
    
         
             
              while (target) {
         
     | 
| 
       127 
138 
     | 
    
         
             
                target["$" + ev.type]?.(ev, target);
         
     | 
| 
       128 
139 
     | 
    
         
             
                target = ev.bubbles && !ev.cancelBubble && target.parentNode;
         
     | 
| 
       129 
140 
     | 
    
         
             
              }
         
     | 
| 
      
 141 
     | 
    
         
            +
              if (true) {
         
     | 
| 
      
 142 
     | 
    
         
            +
                delete ev.currentTarget;
         
     | 
| 
      
 143 
     | 
    
         
            +
              }
         
     | 
| 
       130 
144 
     | 
    
         
             
            }
         
     | 
| 
       131 
145 
     | 
    
         | 
| 
       132 
146 
     | 
    
         
             
            // src/dom/resolve-cursor-position.ts
         
     | 
| 
         @@ -1891,6 +1905,14 @@ function loop(nodeAccessor, renderer, forEach) { 
     | 
|
| 
       1891 
1905 
     | 
    
         
             
                const newMap = scope["LoopScopeMap:" /* LoopScopeMap */ + nodeAccessor] = /* @__PURE__ */ new Map();
         
     | 
| 
       1892 
1906 
     | 
    
         
             
                const newArray = scope["LoopScopeArray:" /* LoopScopeArray */ + nodeAccessor] = [];
         
     | 
| 
       1893 
1907 
     | 
    
         
             
                forEach(value, (key, args) => {
         
     | 
| 
      
 1908 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1909 
     | 
    
         
            +
                    if (newMap.has(key)) {
         
     | 
| 
      
 1910 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1911 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1912 
     | 
    
         
            +
                        key
         
     | 
| 
      
 1913 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1914 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1915 
     | 
    
         
            +
                  }
         
     | 
| 
       1894 
1916 
     | 
    
         
             
                  const branch = oldMap?.get(key) || createAndSetupBranch(scope.$global, renderer, scope, parentNode);
         
     | 
| 
       1895 
1917 
     | 
    
         
             
                  params?.(branch, args);
         
     | 
| 
       1896 
1918 
     | 
    
         
             
                  newMap.set(key, branch);
         
     | 
    
        package/dist/debug/html.js
    CHANGED
    
    | 
         @@ -1872,6 +1872,15 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1872 
1872 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1873 
1873 
     | 
    
         
             
                forOf(list, (item, index) => {
         
     | 
| 
       1874 
1874 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1875 
     | 
    
         
            +
                  const itemKey = forOfBy(by, item, index);
         
     | 
| 
      
 1876 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1877 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1878 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1879 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1880 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1881 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1882 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1883 
     | 
    
         
            +
                  }
         
     | 
| 
       1875 
1884 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1876 
1885 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1877 
1886 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1884,7 +1893,7 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1884 
1893 
     | 
    
         
             
                  }
         
     | 
| 
       1885 
1894 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1886 
1895 
     | 
    
         
             
                    cb(item, index);
         
     | 
| 
       1887 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1896 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1888 
1897 
     | 
    
         
             
                  });
         
     | 
| 
       1889 
1898 
     | 
    
         
             
                });
         
     | 
| 
       1890 
1899 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1913,6 +1922,15 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1913 
1922 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1914 
1923 
     | 
    
         
             
                forIn(obj, (key, value) => {
         
     | 
| 
       1915 
1924 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1925 
     | 
    
         
            +
                  const itemKey = forInBy(by, key, value);
         
     | 
| 
      
 1926 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1927 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1928 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1929 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1930 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1931 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1932 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1933 
     | 
    
         
            +
                  }
         
     | 
| 
       1916 
1934 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1917 
1935 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1918 
1936 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1925,7 +1943,7 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1925 
1943 
     | 
    
         
             
                  }
         
     | 
| 
       1926 
1944 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1927 
1945 
     | 
    
         
             
                    cb(key, value);
         
     | 
| 
       1928 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1946 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1929 
1947 
     | 
    
         
             
                  });
         
     | 
| 
       1930 
1948 
     | 
    
         
             
                });
         
     | 
| 
       1931 
1949 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1954,6 +1972,15 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1954 
1972 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1955 
1973 
     | 
    
         
             
                forTo(to, from, step, (i) => {
         
     | 
| 
       1956 
1974 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1975 
     | 
    
         
            +
                  const itemKey = forStepBy(by, i);
         
     | 
| 
      
 1976 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1977 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1978 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1979 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1980 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1981 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1982 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1983 
     | 
    
         
            +
                  }
         
     | 
| 
       1957 
1984 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1958 
1985 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1959 
1986 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1966,7 +1993,7 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1966 
1993 
     | 
    
         
             
                  }
         
     | 
| 
       1967 
1994 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1968 
1995 
     | 
    
         
             
                    cb(i);
         
     | 
| 
       1969 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1996 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1970 
1997 
     | 
    
         
             
                  });
         
     | 
| 
       1971 
1998 
     | 
    
         
             
                });
         
     | 
| 
       1972 
1999 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1995,6 +2022,15 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       1995 
2022 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1996 
2023 
     | 
    
         
             
                forUntil(to, from, step, (i) => {
         
     | 
| 
       1997 
2024 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 2025 
     | 
    
         
            +
                  const itemKey = forStepBy(by, i);
         
     | 
| 
      
 2026 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 2027 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 2028 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 2029 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 2030 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 2031 
     | 
    
         
            +
                      );
         
     | 
| 
      
 2032 
     | 
    
         
            +
                    }
         
     | 
| 
      
 2033 
     | 
    
         
            +
                  }
         
     | 
| 
       1998 
2034 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1999 
2035 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       2000 
2036 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -2007,7 +2043,7 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       2007 
2043 
     | 
    
         
             
                  }
         
     | 
| 
       2008 
2044 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       2009 
2045 
     | 
    
         
             
                    cb(i);
         
     | 
| 
       2010 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 2046 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       2011 
2047 
     | 
    
         
             
                  });
         
     | 
| 
       2012 
2048 
     | 
    
         
             
                });
         
     | 
| 
       2013 
2049 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
    
        package/dist/debug/html.mjs
    CHANGED
    
    | 
         @@ -1783,6 +1783,15 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1783 
1783 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1784 
1784 
     | 
    
         
             
                forOf(list, (item, index) => {
         
     | 
| 
       1785 
1785 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1786 
     | 
    
         
            +
                  const itemKey = forOfBy(by, item, index);
         
     | 
| 
      
 1787 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1788 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1789 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1790 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1791 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1792 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1793 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1794 
     | 
    
         
            +
                  }
         
     | 
| 
       1786 
1795 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1787 
1796 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1788 
1797 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1795,7 +1804,7 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1795 
1804 
     | 
    
         
             
                  }
         
     | 
| 
       1796 
1805 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1797 
1806 
     | 
    
         
             
                    cb(item, index);
         
     | 
| 
       1798 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1807 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1799 
1808 
     | 
    
         
             
                  });
         
     | 
| 
       1800 
1809 
     | 
    
         
             
                });
         
     | 
| 
       1801 
1810 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1824,6 +1833,15 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1824 
1833 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1825 
1834 
     | 
    
         
             
                forIn(obj, (key, value) => {
         
     | 
| 
       1826 
1835 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1836 
     | 
    
         
            +
                  const itemKey = forInBy(by, key, value);
         
     | 
| 
      
 1837 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1838 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1839 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1840 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1841 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1842 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1843 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1844 
     | 
    
         
            +
                  }
         
     | 
| 
       1827 
1845 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1828 
1846 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1829 
1847 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1836,7 +1854,7 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1836 
1854 
     | 
    
         
             
                  }
         
     | 
| 
       1837 
1855 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1838 
1856 
     | 
    
         
             
                    cb(key, value);
         
     | 
| 
       1839 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1857 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1840 
1858 
     | 
    
         
             
                  });
         
     | 
| 
       1841 
1859 
     | 
    
         
             
                });
         
     | 
| 
       1842 
1860 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1865,6 +1883,15 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1865 
1883 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1866 
1884 
     | 
    
         
             
                forTo(to, from, step, (i) => {
         
     | 
| 
       1867 
1885 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1886 
     | 
    
         
            +
                  const itemKey = forStepBy(by, i);
         
     | 
| 
      
 1887 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1888 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1889 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1890 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1891 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1892 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1893 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1894 
     | 
    
         
            +
                  }
         
     | 
| 
       1868 
1895 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1869 
1896 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1870 
1897 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1877,7 +1904,7 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1877 
1904 
     | 
    
         
             
                  }
         
     | 
| 
       1878 
1905 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1879 
1906 
     | 
    
         
             
                    cb(i);
         
     | 
| 
       1880 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1907 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1881 
1908 
     | 
    
         
             
                  });
         
     | 
| 
       1882 
1909 
     | 
    
         
             
                });
         
     | 
| 
       1883 
1910 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
| 
         @@ -1906,6 +1933,15 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       1906 
1933 
     | 
    
         
             
                const loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1907 
1934 
     | 
    
         
             
                forUntil(to, from, step, (i) => {
         
     | 
| 
       1908 
1935 
     | 
    
         
             
                  const branchId = _peek_scope_id();
         
     | 
| 
      
 1936 
     | 
    
         
            +
                  const itemKey = forStepBy(by, i);
         
     | 
| 
      
 1937 
     | 
    
         
            +
                  if (true) {
         
     | 
| 
      
 1938 
     | 
    
         
            +
                    if (by && loopScopes.has(itemKey)) {
         
     | 
| 
      
 1939 
     | 
    
         
            +
                      console.error(
         
     | 
| 
      
 1940 
     | 
    
         
            +
                        `A <for> tag's \`by\` attribute must return a unique value for each item, but a duplicate was found matching:`,
         
     | 
| 
      
 1941 
     | 
    
         
            +
                        itemKey
         
     | 
| 
      
 1942 
     | 
    
         
            +
                      );
         
     | 
| 
      
 1943 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1944 
     | 
    
         
            +
                  }
         
     | 
| 
       1909 
1945 
     | 
    
         
             
                  if (resumeMarker) {
         
     | 
| 
       1910 
1946 
     | 
    
         
             
                    if (singleNode) {
         
     | 
| 
       1911 
1947 
     | 
    
         
             
                      flushBranchIds = " " + branchId + flushBranchIds;
         
     | 
| 
         @@ -1918,7 +1954,7 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       1918 
1954 
     | 
    
         
             
                  }
         
     | 
| 
       1919 
1955 
     | 
    
         
             
                  withBranchId(branchId, () => {
         
     | 
| 
       1920 
1956 
     | 
    
         
             
                    cb(i);
         
     | 
| 
       1921 
     | 
    
         
            -
                    loopScopes.set( 
     | 
| 
      
 1957 
     | 
    
         
            +
                    loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1922 
1958 
     | 
    
         
             
                  });
         
     | 
| 
       1923 
1959 
     | 
    
         
             
                });
         
     | 
| 
       1924 
1960 
     | 
    
         
             
                if (loopScopes.size) {
         
     | 
    
        package/dist/html.js
    CHANGED
    
    | 
         @@ -1217,11 +1217,11 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1217 
1217 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1218 
1218 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1219 
1219 
     | 
    
         
             
                forOf(list, (item, index) => {
         
     | 
| 
       1220 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1220 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forOfBy(by, item, index);
         
     | 
| 
       1221 
1221 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1222 
1222 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1223 
1223 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1224 
     | 
    
         
            -
                    cb(item, index), loopScopes.set( 
     | 
| 
      
 1224 
     | 
    
         
            +
                    cb(item, index), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1225 
1225 
     | 
    
         
             
                  });
         
     | 
| 
       1226 
1226 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1227 
1227 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1243,11 +1243,11 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1243 
1243 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1244 
1244 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1245 
1245 
     | 
    
         
             
                forIn(obj, (key, value) => {
         
     | 
| 
       1246 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1246 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forInBy(by, key, value);
         
     | 
| 
       1247 
1247 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1248 
1248 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1249 
1249 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1250 
     | 
    
         
            -
                    cb(key, value), loopScopes.set( 
     | 
| 
      
 1250 
     | 
    
         
            +
                    cb(key, value), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1251 
1251 
     | 
    
         
             
                  });
         
     | 
| 
       1252 
1252 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1253 
1253 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1269,11 +1269,11 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1269 
1269 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1270 
1270 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1271 
1271 
     | 
    
         
             
                forTo(to, from, step, (i) => {
         
     | 
| 
       1272 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1272 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forStepBy(by, i);
         
     | 
| 
       1273 
1273 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1274 
1274 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1275 
1275 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1276 
     | 
    
         
            -
                    cb(i), loopScopes.set( 
     | 
| 
      
 1276 
     | 
    
         
            +
                    cb(i), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1277 
1277 
     | 
    
         
             
                  });
         
     | 
| 
       1278 
1278 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1279 
1279 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1295,11 +1295,11 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       1295 
1295 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1296 
1296 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1297 
1297 
     | 
    
         
             
                forUntil(to, from, step, (i) => {
         
     | 
| 
       1298 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1298 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forStepBy(by, i);
         
     | 
| 
       1299 
1299 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1300 
1300 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1301 
1301 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1302 
     | 
    
         
            -
                    cb(i), loopScopes.set( 
     | 
| 
      
 1302 
     | 
    
         
            +
                    cb(i), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1303 
1303 
     | 
    
         
             
                  });
         
     | 
| 
       1304 
1304 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1305 
1305 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
    
        package/dist/html.mjs
    CHANGED
    
    | 
         @@ -1131,11 +1131,11 @@ function _for_of(list, cb, by, scopeId, accessor, serializeBranch, serializeMark 
     | 
|
| 
       1131 
1131 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1132 
1132 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1133 
1133 
     | 
    
         
             
                forOf(list, (item, index) => {
         
     | 
| 
       1134 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1134 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forOfBy(by, item, index);
         
     | 
| 
       1135 
1135 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1136 
1136 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1137 
1137 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1138 
     | 
    
         
            -
                    cb(item, index), loopScopes.set( 
     | 
| 
      
 1138 
     | 
    
         
            +
                    cb(item, index), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1139 
1139 
     | 
    
         
             
                  });
         
     | 
| 
       1140 
1140 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1141 
1141 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1157,11 +1157,11 @@ function _for_in(obj, cb, by, scopeId, accessor, serializeBranch, serializeMarke 
     | 
|
| 
       1157 
1157 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1158 
1158 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1159 
1159 
     | 
    
         
             
                forIn(obj, (key, value) => {
         
     | 
| 
       1160 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1160 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forInBy(by, key, value);
         
     | 
| 
       1161 
1161 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1162 
1162 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1163 
1163 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1164 
     | 
    
         
            -
                    cb(key, value), loopScopes.set( 
     | 
| 
      
 1164 
     | 
    
         
            +
                    cb(key, value), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1165 
1165 
     | 
    
         
             
                  });
         
     | 
| 
       1166 
1166 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1167 
1167 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1183,11 +1183,11 @@ function _for_to(to, from, step, cb, by, scopeId, accessor, serializeBranch, ser 
     | 
|
| 
       1183 
1183 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1184 
1184 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1185 
1185 
     | 
    
         
             
                forTo(to, from, step, (i) => {
         
     | 
| 
       1186 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1186 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forStepBy(by, i);
         
     | 
| 
       1187 
1187 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1188 
1188 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1189 
1189 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1190 
     | 
    
         
            -
                    cb(i), loopScopes.set( 
     | 
| 
      
 1190 
     | 
    
         
            +
                    cb(i), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1191 
1191 
     | 
    
         
             
                  });
         
     | 
| 
       1192 
1192 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1193 
1193 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
| 
         @@ -1209,11 +1209,11 @@ function _for_until(to, from, step, cb, by, scopeId, accessor, serializeBranch, 
     | 
|
| 
       1209 
1209 
     | 
    
         
             
              if (serializeBranch !== 0) {
         
     | 
| 
       1210 
1210 
     | 
    
         
             
                let loopScopes = /* @__PURE__ */ new Map();
         
     | 
| 
       1211 
1211 
     | 
    
         
             
                forUntil(to, from, step, (i) => {
         
     | 
| 
       1212 
     | 
    
         
            -
                  let branchId = _peek_scope_id();
         
     | 
| 
      
 1212 
     | 
    
         
            +
                  let branchId = _peek_scope_id(), itemKey = forStepBy(by, i);
         
     | 
| 
       1213 
1213 
     | 
    
         
             
                  resumeMarker && (singleNode ? flushBranchIds = " " + branchId + flushBranchIds : ($chunk.writeHTML(
         
     | 
| 
       1214 
1214 
     | 
    
         
             
                    state.mark("[" /* BranchStart */, flushBranchIds)
         
     | 
| 
       1215 
1215 
     | 
    
         
             
                  ), flushBranchIds = branchId + "")), withBranchId(branchId, () => {
         
     | 
| 
       1216 
     | 
    
         
            -
                    cb(i), loopScopes.set( 
     | 
| 
      
 1216 
     | 
    
         
            +
                    cb(i), loopScopes.set(itemKey, writeScope(branchId, {}));
         
     | 
| 
       1217 
1217 
     | 
    
         
             
                  });
         
     | 
| 
       1218 
1218 
     | 
    
         
             
                }), loopScopes.size && writeScope(scopeId, {
         
     | 
| 
       1219 
1219 
     | 
    
         
             
                  ["m" /* LoopScopeMap */ + accessor]: loopScopes
         
     | 
    
        package/dist/translator/index.js
    CHANGED
    
    | 
         @@ -2591,8 +2591,8 @@ var import_compiler13 = require("@marko/compiler"); 
     | 
|
| 
       2591 
2591 
     | 
    
         
             
            function normalizeStringExpression(parts) {
         
     | 
| 
       2592 
2592 
     | 
    
         
             
              const strs = [];
         
     | 
| 
       2593 
2593 
     | 
    
         
             
              const exprs = [];
         
     | 
| 
       2594 
     | 
    
         
            -
              let curStr =  
     | 
| 
       2595 
     | 
    
         
            -
              for (let i =  
     | 
| 
      
 2594 
     | 
    
         
            +
              let curStr = "";
         
     | 
| 
      
 2595 
     | 
    
         
            +
              for (let i = 0; i < parts.length; i++) {
         
     | 
| 
       2596 
2596 
     | 
    
         
             
                let content = parts[i];
         
     | 
| 
       2597 
2597 
     | 
    
         
             
                if (typeof content === "object") {
         
     | 
| 
       2598 
2598 
     | 
    
         
             
                  if (import_compiler13.types.isStringLiteral(content)) {
         
     | 
| 
         @@ -4166,7 +4166,8 @@ function replaceEffectNode(node) { 
     | 
|
| 
       4166 
4166 
     | 
    
         
             
            function replaceBindingReadNode(node) {
         
     | 
| 
       4167 
4167 
     | 
    
         
             
              switch (node.type) {
         
     | 
| 
       4168 
4168 
     | 
    
         
             
                case "Identifier":
         
     | 
| 
       4169 
     | 
    
         
            -
                case "MemberExpression": 
     | 
| 
      
 4169 
     | 
    
         
            +
                case "MemberExpression":
         
     | 
| 
      
 4170 
     | 
    
         
            +
                case "OptionalMemberExpression": {
         
     | 
| 
       4170 
4171 
     | 
    
         
             
                  return getReadReplacement(node);
         
     | 
| 
       4171 
4172 
     | 
    
         
             
                }
         
     | 
| 
       4172 
4173 
     | 
    
         
             
              }
         
     | 
| 
         @@ -4576,7 +4577,8 @@ function replaceNode(node, container) { 
     | 
|
| 
       4576 
4577 
     | 
    
         
             
            function replaceBindingReadNode2(node) {
         
     | 
| 
       4577 
4578 
     | 
    
         
             
              switch (node.type) {
         
     | 
| 
       4578 
4579 
     | 
    
         
             
                case "Identifier":
         
     | 
| 
       4579 
     | 
    
         
            -
                case "MemberExpression": 
     | 
| 
      
 4580 
     | 
    
         
            +
                case "MemberExpression":
         
     | 
| 
      
 4581 
     | 
    
         
            +
                case "OptionalMemberExpression": {
         
     | 
| 
       4580 
4582 
     | 
    
         
             
                  const { extra } = node;
         
     | 
| 
       4581 
4583 
     | 
    
         
             
                  if (extra && !(extra.read && !extra.read.binding.declared || extra.binding && !extra.binding.declared)) {
         
     | 
| 
       4582 
4584 
     | 
    
         
             
                    return getReadReplacement(node);
         
     | 
| 
         @@ -4781,20 +4783,19 @@ function getChangeHandler(tag, attr) { 
     | 
|
| 
       4781 
4783 
     | 
    
         
             
                  changeAttrName,
         
     | 
| 
       4782 
4784 
     | 
    
         
             
                  withPreviousLocation(import_compiler25.types.identifier(changeHandlerId), attr.value)
         
     | 
| 
       4783 
4785 
     | 
    
         
             
                );
         
     | 
| 
       4784 
     | 
    
         
            -
              } else if (import_compiler25.types.isMemberExpression(attr.value)) {
         
     | 
| 
      
 4786 
     | 
    
         
            +
              } else if (import_compiler25.types.isMemberExpression(attr.value) || import_compiler25.types.isOptionalMemberExpression(attr.value)) {
         
     | 
| 
       4785 
4787 
     | 
    
         
             
                const prop = attr.value.property;
         
     | 
| 
       4786 
4788 
     | 
    
         
             
                if (!import_compiler25.types.isPrivateName(attr.value.property)) {
         
     | 
| 
      
 4789 
     | 
    
         
            +
                  const memberObj = import_compiler25.types.cloneNode(attr.value.object);
         
     | 
| 
      
 4790 
     | 
    
         
            +
                  const memberProp = prop.type === "Identifier" ? withPreviousLocation(import_compiler25.types.identifier(prop.name + "Change"), prop) : import_compiler25.types.binaryExpression(
         
     | 
| 
      
 4791 
     | 
    
         
            +
                    "+",
         
     | 
| 
      
 4792 
     | 
    
         
            +
                    import_compiler25.types.cloneNode(prop),
         
     | 
| 
      
 4793 
     | 
    
         
            +
                    import_compiler25.types.stringLiteral("Change")
         
     | 
| 
      
 4794 
     | 
    
         
            +
                  );
         
     | 
| 
      
 4795 
     | 
    
         
            +
                  const computed = memberProp.type !== "Identifier";
         
     | 
| 
       4787 
4796 
     | 
    
         
             
                  return import_compiler25.types.markoAttribute(
         
     | 
| 
       4788 
4797 
     | 
    
         
             
                    changeAttrName,
         
     | 
| 
       4789 
     | 
    
         
            -
                    import_compiler25.types.memberExpression(
         
     | 
| 
       4790 
     | 
    
         
            -
                      import_compiler25.types.cloneNode(attr.value.object),
         
     | 
| 
       4791 
     | 
    
         
            -
                      prop.type === "Identifier" ? withPreviousLocation(import_compiler25.types.identifier(prop.name + "Change"), prop) : import_compiler25.types.binaryExpression(
         
     | 
| 
       4792 
     | 
    
         
            -
                        "+",
         
     | 
| 
       4793 
     | 
    
         
            -
                        import_compiler25.types.cloneNode(prop),
         
     | 
| 
       4794 
     | 
    
         
            -
                        import_compiler25.types.stringLiteral("Change")
         
     | 
| 
       4795 
     | 
    
         
            -
                      ),
         
     | 
| 
       4796 
     | 
    
         
            -
                      prop.type !== "Identifier"
         
     | 
| 
       4797 
     | 
    
         
            -
                    )
         
     | 
| 
      
 4798 
     | 
    
         
            +
                    attr.value.optional ? import_compiler25.types.optionalMemberExpression(memberObj, memberProp, computed, true) : import_compiler25.types.memberExpression(memberObj, memberProp, computed)
         
     | 
| 
       4798 
4799 
     | 
    
         
             
                  );
         
     | 
| 
       4799 
4800 
     | 
    
         
             
                }
         
     | 
| 
       4800 
4801 
     | 
    
         
             
              }
         
     | 
| 
         @@ -8077,7 +8078,8 @@ function trackReference(referencePath, binding) { 
     | 
|
| 
       8077 
8078 
     | 
    
         
             
              let propPath = binding.name;
         
     | 
| 
       8078 
8079 
     | 
    
         
             
              while (true) {
         
     | 
| 
       8079 
8080 
     | 
    
         
             
                const { parent } = root;
         
     | 
| 
       8080 
     | 
    
         
            -
                if (!import_compiler35.types.isMemberExpression(parent)) 
     | 
| 
      
 8081 
     | 
    
         
            +
                if (!import_compiler35.types.isMemberExpression(parent) && !import_compiler35.types.isOptionalMemberExpression(parent))
         
     | 
| 
      
 8082 
     | 
    
         
            +
                  break;
         
     | 
| 
       8081 
8083 
     | 
    
         
             
                const prop = getMemberExpressionPropString(parent);
         
     | 
| 
       8082 
8084 
     | 
    
         
             
                if (prop === void 0) break;
         
     | 
| 
       8083 
8085 
     | 
    
         
             
                if (reference.upstreamAlias && reference.excludeProperties !== void 0 && !propsUtil.has(reference.excludeProperties, prop)) {
         
     | 
| 
         @@ -1,3 +1,3 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { types as t } from "@marko/compiler";
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { type Binding } from "./references";
         
     | 
| 
       3 
     | 
    
         
            -
            export declare function getDeclaredBindingExpression(binding: Binding): t.Identifier | t. 
     | 
| 
      
 3 
     | 
    
         
            +
            export declare function getDeclaredBindingExpression(binding: Binding): t.Identifier | t.MemberExpression | t.OptionalMemberExpression;
         
     | 
| 
         @@ -108,7 +108,7 @@ export declare function getDebugName(binding: Binding): string; 
     | 
|
| 
       108 
108 
     | 
    
         
             
            export declare function getDebugNames(refs: ReferencedBindings): string;
         
     | 
| 
       109 
109 
     | 
    
         
             
            export declare function getSectionInstancesAccessor(section: Section): string;
         
     | 
| 
       110 
110 
     | 
    
         
             
            export declare function getSectionInstancesAccessorLiteral(section: Section): t.StringLiteral | t.NumericLiteral | undefined;
         
     | 
| 
       111 
     | 
    
         
            -
            export declare function getReadReplacement(node: t.Identifier | t.MemberExpression): t.Node | undefined;
         
     | 
| 
      
 111 
     | 
    
         
            +
            export declare function getReadReplacement(node: t.Identifier | t.MemberExpression | t.OptionalMemberExpression): t.Node | undefined;
         
     | 
| 
       112 
112 
     | 
    
         
             
            export interface ReferencedExtra extends t.NodeExtra {
         
     | 
| 
       113 
113 
     | 
    
         
             
                section: Section;
         
     | 
| 
       114 
114 
     | 
    
         
             
                fnExtra?: FnExtra;
         
     |