Skip to content

[6.x] Bard fieldtype cannot duplicate Set when last child in editor #13368

@martyf

Description

@martyf

Bug description

When trying to duplicate a Set in a Bard field which happens to be the last child in the Editor (i.e. no Sets after, no empty space after), a JS error is thrown:

Uncaught (in promise) RangeError: Position 9 out of range
    resolve http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:1
    resolveCached http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:1
    resolve http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:1
    vn http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:5
    replace http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:5
    replaceWith http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:5
    insert http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:5
    setAt http://s6-plain.test/vendor/statamic/cp/build/assets/BardFieldtype-C3eIm3nb.js:8
    get commands/</< http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:10
    duplicateSet http://s6-plain.test/vendor/statamic/cp/build/assets/BardFieldtype-C3eIm3nb.js:10
    promise callback*nextTick$1 http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:17
    duplicateSet http://s6-plain.test/vendor/statamic/cp/build/assets/BardFieldtype-C3eIm3nb.js:10
    duplicate http://s6-plain.test/vendor/statamic/cp/build/assets/Set-B2K5mI1X.js:87
    patchStopImmediatePropagation http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:26
    callWithErrorHandling http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:17
    callWithAsyncErrorHandling http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:17
    callWithAsyncErrorHandling http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:17
    U http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:26
    addEventListener http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:26
    patchEvent http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:26
    patchProp http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:26
    Lt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    It http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    xt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    qn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    run http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:10
    rn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    sn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    tn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    xt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    qn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    run http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:10
    rn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    sn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    tn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    xt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    qn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    run http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:10
    rn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    sn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    tn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    xt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    qn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    run http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:10
    rn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    sn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    tn http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
    xt http://s6-plain.test/vendor/statamic/cp/build/assets/index-B6t0AjCd.js:18
Set-B2K5mI1X.js:1:14215

How to reproduce

  1. Statamic 6 Alpha 19 clean install
  2. Edit Page blueprint to have a Bard field, add a Set with a single text field
  3. Edit Home Page, and in the Bard Field, add 2 of the Set, with values of "A" and "B" (for example)
  4. Remove the empty space after the Sets
  5. TIMESAVER: Save and re-load
  6. Try to duplicate the last Set ("B")
  7. JS error thrown

Logs

Environment

Environment
Application Name: Statamic
Laravel Version: 12.43.1
PHP Version: 8.4.15
Composer Version: 2.9.2
Environment: local
Debug Mode: ENABLED
URL: s6-plain.test
Maintenance Mode: OFF
Timezone: UTC
Locale: en

Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED

Drivers
Broadcasting: log
Cache: file
Database: sqlite
Logs: stack / single
Mail: log
Queue: sync
Session: file

Storage
public/storage: NOT LINKED

Statamic
Addons: 0
Sites: 1
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 6.0.0-alpha.19 PRO

Installation

Fresh statamic/statamic site via CLI

Additional details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions