1
1
/*
2
- Trix 2.1.6
2
+ Trix 2.1.7
3
3
Copyright © 2024 37signals, LLC
4
4
*/
5
5
( function ( global , factory ) {
@@ -9,7 +9,7 @@ Copyright © 2024 37signals, LLC
9
9
} ) ( this , ( function ( ) { 'use strict' ;
10
10
11
11
var name = "trix" ;
12
- var version = "2.1.6 " ;
12
+ var version = "2.1.7 " ;
13
13
var description = "A rich text editor for everyday writing" ;
14
14
var main = "dist/trix.umd.min.js" ;
15
15
var module = "dist/trix.esm.min.js" ;
@@ -1037,7 +1037,11 @@ $\
1037
1037
const getCSPNonce = function ( ) {
1038
1038
const element = getMetaElement ( "trix-csp-nonce" ) || getMetaElement ( "csp-nonce" ) ;
1039
1039
if ( element ) {
1040
- return element . getAttribute ( "content" ) ;
1040
+ const {
1041
+ nonce,
1042
+ content
1043
+ } = element ;
1044
+ return nonce == "" ? content : nonce ;
1041
1045
}
1042
1046
} ;
1043
1047
const getMetaElement = name => document . head . querySelector ( "meta[name=" . concat ( name , "]" ) ) ;
@@ -11719,7 +11723,7 @@ $\
11719
11723
updateInputElement ( ) {
11720
11724
const element = this . compositionController . getSerializableElement ( ) ;
11721
11725
const value = serializeToContentType ( element , "text/html" ) ;
11722
- return this . editorElement . setInputElementValue ( value ) ;
11726
+ return this . editorElement . setFormValue ( value ) ;
11723
11727
}
11724
11728
notifyEditorElement ( message , data ) {
11725
11729
switch ( message ) {
@@ -11977,7 +11981,186 @@ $\
11977
11981
}
11978
11982
} ( ) ;
11979
11983
installDefaultCSSForTagName ( "trix-editor" , "%t {\n display: block;\n}\n\n%t:empty::before {\n content: attr(placeholder);\n color: graytext;\n cursor: text;\n pointer-events: none;\n white-space: pre-line;\n}\n\n%t a[contenteditable=false] {\n cursor: text;\n}\n\n%t img {\n max-width: 100%;\n height: auto;\n}\n\n%t " . concat ( attachmentSelector , " figcaption textarea {\n resize: none;\n}\n\n%t " ) . concat ( attachmentSelector , " figcaption textarea.trix-autoresize-clone {\n position: absolute;\n left: -9999px;\n max-height: 0px;\n}\n\n%t " ) . concat ( attachmentSelector , " figcaption[data-trix-placeholder]:empty::before {\n content: attr(data-trix-placeholder);\n color: graytext;\n}\n\n%t [data-trix-cursor-target] {\n display: " ) . concat ( cursorTargetStyles . display , " !important;\n width: " ) . concat ( cursorTargetStyles . width , " !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n}\n\n%t [data-trix-cursor-target=left] {\n vertical-align: top !important;\n margin-left: -1px !important;\n}\n\n%t [data-trix-cursor-target=right] {\n vertical-align: bottom !important;\n margin-right: -1px !important;\n}" ) ) ;
11984
+ var _internals = /*#__PURE__*/ new WeakMap ( ) ;
11985
+ var _validate = /*#__PURE__*/ new WeakSet ( ) ;
11986
+ class ElementInternalsDelegate {
11987
+ constructor ( element ) {
11988
+ _classPrivateMethodInitSpec ( this , _validate ) ;
11989
+ _classPrivateFieldInitSpec ( this , _internals , {
11990
+ writable : true ,
11991
+ value : void 0
11992
+ } ) ;
11993
+ this . element = element ;
11994
+ _classPrivateFieldSet ( this , _internals , element . attachInternals ( ) ) ;
11995
+ }
11996
+ connectedCallback ( ) {
11997
+ _classPrivateMethodGet ( this , _validate , _validate2 ) . call ( this ) ;
11998
+ }
11999
+ disconnectedCallback ( ) { }
12000
+ get labels ( ) {
12001
+ return _classPrivateFieldGet ( this , _internals ) . labels ;
12002
+ }
12003
+ get disabled ( ) {
12004
+ var _this$element$inputEl ;
12005
+ return ( _this$element$inputEl = this . element . inputElement ) === null || _this$element$inputEl === void 0 ? void 0 : _this$element$inputEl . disabled ;
12006
+ }
12007
+ set disabled ( value ) {
12008
+ this . element . toggleAttribute ( "disabled" , value ) ;
12009
+ }
12010
+ get required ( ) {
12011
+ return this . element . hasAttribute ( "required" ) ;
12012
+ }
12013
+ set required ( value ) {
12014
+ this . element . toggleAttribute ( "required" , value ) ;
12015
+ _classPrivateMethodGet ( this , _validate , _validate2 ) . call ( this ) ;
12016
+ }
12017
+ get validity ( ) {
12018
+ return _classPrivateFieldGet ( this , _internals ) . validity ;
12019
+ }
12020
+ get validationMessage ( ) {
12021
+ return _classPrivateFieldGet ( this , _internals ) . validationMessage ;
12022
+ }
12023
+ get willValidate ( ) {
12024
+ return _classPrivateFieldGet ( this , _internals ) . willValidate ;
12025
+ }
12026
+ setFormValue ( value ) {
12027
+ _classPrivateMethodGet ( this , _validate , _validate2 ) . call ( this ) ;
12028
+ }
12029
+ checkValidity ( ) {
12030
+ return _classPrivateFieldGet ( this , _internals ) . checkValidity ( ) ;
12031
+ }
12032
+ reportValidity ( ) {
12033
+ return _classPrivateFieldGet ( this , _internals ) . reportValidity ( ) ;
12034
+ }
12035
+ setCustomValidity ( validationMessage ) {
12036
+ _classPrivateMethodGet ( this , _validate , _validate2 ) . call ( this , validationMessage ) ;
12037
+ }
12038
+ }
12039
+ function _validate2 ( ) {
12040
+ let customValidationMessage = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : "" ;
12041
+ const {
12042
+ required,
12043
+ value
12044
+ } = this . element ;
12045
+ const valueMissing = required && ! value ;
12046
+ const customError = ! ! customValidationMessage ;
12047
+ const input = makeElement ( "input" , {
12048
+ required
12049
+ } ) ;
12050
+ const validationMessage = customValidationMessage || input . validationMessage ;
12051
+ _classPrivateFieldGet ( this , _internals ) . setValidity ( {
12052
+ valueMissing,
12053
+ customError
12054
+ } , validationMessage ) ;
12055
+ }
12056
+ var _focusHandler = /*#__PURE__*/ new WeakMap ( ) ;
12057
+ var _resetBubbled = /*#__PURE__*/ new WeakMap ( ) ;
12058
+ var _clickBubbled = /*#__PURE__*/ new WeakMap ( ) ;
12059
+ class LegacyDelegate {
12060
+ constructor ( element ) {
12061
+ _classPrivateFieldInitSpec ( this , _focusHandler , {
12062
+ writable : true ,
12063
+ value : void 0
12064
+ } ) ;
12065
+ _classPrivateFieldInitSpec ( this , _resetBubbled , {
12066
+ writable : true ,
12067
+ value : event => {
12068
+ if ( event . defaultPrevented ) return ;
12069
+ if ( event . target !== this . element . form ) return ;
12070
+ this . element . reset ( ) ;
12071
+ }
12072
+ } ) ;
12073
+ _classPrivateFieldInitSpec ( this , _clickBubbled , {
12074
+ writable : true ,
12075
+ value : event => {
12076
+ if ( event . defaultPrevented ) return ;
12077
+ if ( this . element . contains ( event . target ) ) return ;
12078
+ const label = findClosestElementFromNode ( event . target , {
12079
+ matchingSelector : "label"
12080
+ } ) ;
12081
+ if ( ! label ) return ;
12082
+ if ( ! Array . from ( this . labels ) . includes ( label ) ) return ;
12083
+ this . element . focus ( ) ;
12084
+ }
12085
+ } ) ;
12086
+ this . element = element ;
12087
+ }
12088
+ connectedCallback ( ) {
12089
+ _classPrivateFieldSet ( this , _focusHandler , ensureAriaLabel ( this . element ) ) ;
12090
+ window . addEventListener ( "reset" , _classPrivateFieldGet ( this , _resetBubbled ) , false ) ;
12091
+ window . addEventListener ( "click" , _classPrivateFieldGet ( this , _clickBubbled ) , false ) ;
12092
+ }
12093
+ disconnectedCallback ( ) {
12094
+ var _classPrivateFieldGet2 ;
12095
+ ( _classPrivateFieldGet2 = _classPrivateFieldGet ( this , _focusHandler ) ) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2 . destroy ( ) ;
12096
+ window . removeEventListener ( "reset" , _classPrivateFieldGet ( this , _resetBubbled ) , false ) ;
12097
+ window . removeEventListener ( "click" , _classPrivateFieldGet ( this , _clickBubbled ) , false ) ;
12098
+ }
12099
+ get labels ( ) {
12100
+ const labels = [ ] ;
12101
+ if ( this . element . id && this . element . ownerDocument ) {
12102
+ labels . push ( ...Array . from ( this . element . ownerDocument . querySelectorAll ( "label[for='" . concat ( this . element . id , "']" ) ) || [ ] ) ) ;
12103
+ }
12104
+ const label = findClosestElementFromNode ( this . element , {
12105
+ matchingSelector : "label"
12106
+ } ) ;
12107
+ if ( label ) {
12108
+ if ( [ this . element , null ] . includes ( label . control ) ) {
12109
+ labels . push ( label ) ;
12110
+ }
12111
+ }
12112
+ return labels ;
12113
+ }
12114
+ get disabled ( ) {
12115
+ console . warn ( "This browser does not support the [disabled] attribute for trix-editor elements." ) ;
12116
+ return false ;
12117
+ }
12118
+ set disabled ( value ) {
12119
+ console . warn ( "This browser does not support the [disabled] attribute for trix-editor elements." ) ;
12120
+ }
12121
+ get required ( ) {
12122
+ console . warn ( "This browser does not support the [required] attribute for trix-editor elements." ) ;
12123
+ return false ;
12124
+ }
12125
+ set required ( value ) {
12126
+ console . warn ( "This browser does not support the [required] attribute for trix-editor elements." ) ;
12127
+ }
12128
+ get validity ( ) {
12129
+ console . warn ( "This browser does not support the validity property for trix-editor elements." ) ;
12130
+ return null ;
12131
+ }
12132
+ get validationMessage ( ) {
12133
+ console . warn ( "This browser does not support the validationMessage property for trix-editor elements." ) ;
12134
+ return "" ;
12135
+ }
12136
+ get willValidate ( ) {
12137
+ console . warn ( "This browser does not support the willValidate property for trix-editor elements." ) ;
12138
+ return false ;
12139
+ }
12140
+ setFormValue ( value ) { }
12141
+ checkValidity ( ) {
12142
+ console . warn ( "This browser does not support checkValidity() for trix-editor elements." ) ;
12143
+ return true ;
12144
+ }
12145
+ reportValidity ( ) {
12146
+ console . warn ( "This browser does not support reportValidity() for trix-editor elements." ) ;
12147
+ return true ;
12148
+ }
12149
+ setCustomValidity ( validationMessage ) {
12150
+ console . warn ( "This browser does not support setCustomValidity(validationMessage) for trix-editor elements." ) ;
12151
+ }
12152
+ }
12153
+ var _delegate = /*#__PURE__*/ new WeakMap ( ) ;
11980
12154
class TrixEditorElement extends HTMLElement {
12155
+ constructor ( ) {
12156
+ super ( ) ;
12157
+ _classPrivateFieldInitSpec ( this , _delegate , {
12158
+ writable : true ,
12159
+ value : void 0
12160
+ } ) ;
12161
+ _classPrivateFieldSet ( this , _delegate , this . constructor . formAssociated ? new ElementInternalsDelegate ( this ) : new LegacyDelegate ( this ) ) ;
12162
+ }
12163
+
11981
12164
// Properties
11982
12165
11983
12166
get trixId ( ) {
@@ -11989,19 +12172,31 @@ $\
11989
12172
}
11990
12173
}
11991
12174
get labels ( ) {
11992
- const labels = [ ] ;
11993
- if ( this . id && this . ownerDocument ) {
11994
- labels . push ( ...Array . from ( this . ownerDocument . querySelectorAll ( "label[for='" . concat ( this . id , "']" ) ) || [ ] ) ) ;
11995
- }
11996
- const label = findClosestElementFromNode ( this , {
11997
- matchingSelector : "label"
11998
- } ) ;
11999
- if ( label ) {
12000
- if ( [ this , null ] . includes ( label . control ) ) {
12001
- labels . push ( label ) ;
12002
- }
12003
- }
12004
- return labels ;
12175
+ return _classPrivateFieldGet ( this , _delegate ) . labels ;
12176
+ }
12177
+ get disabled ( ) {
12178
+ return _classPrivateFieldGet ( this , _delegate ) . disabled ;
12179
+ }
12180
+ set disabled ( value ) {
12181
+ _classPrivateFieldGet ( this , _delegate ) . disabled = value ;
12182
+ }
12183
+ get required ( ) {
12184
+ return _classPrivateFieldGet ( this , _delegate ) . required ;
12185
+ }
12186
+ set required ( value ) {
12187
+ _classPrivateFieldGet ( this , _delegate ) . required = value ;
12188
+ }
12189
+ get validity ( ) {
12190
+ return _classPrivateFieldGet ( this , _delegate ) . validity ;
12191
+ }
12192
+ get validationMessage ( ) {
12193
+ return _classPrivateFieldGet ( this , _delegate ) . validationMessage ;
12194
+ }
12195
+ get willValidate ( ) {
12196
+ return _classPrivateFieldGet ( this , _delegate ) . willValidate ;
12197
+ }
12198
+ get type ( ) {
12199
+ return this . localName ;
12005
12200
}
12006
12201
get toolbarElement ( ) {
12007
12202
if ( this . hasAttribute ( "toolbar" ) ) {
@@ -12068,9 +12263,10 @@ $\
12068
12263
} ) ;
12069
12264
}
12070
12265
}
12071
- setInputElementValue ( value ) {
12266
+ setFormValue ( value ) {
12072
12267
if ( this . inputElement ) {
12073
12268
this . inputElement . value = value ;
12269
+ _classPrivateFieldGet ( this , _delegate ) . setFormValue ( value ) ;
12074
12270
}
12075
12271
}
12076
12272
@@ -12080,7 +12276,6 @@ $\
12080
12276
if ( ! this . hasAttribute ( "data-trix-internal" ) ) {
12081
12277
makeEditable ( this ) ;
12082
12278
addAccessibilityRole ( this ) ;
12083
- ensureAriaLabel ( this ) ;
12084
12279
if ( ! this . editorController ) {
12085
12280
triggerEvent ( "trix-before-initialize" , {
12086
12281
onElement : this
@@ -12094,53 +12289,41 @@ $\
12094
12289
} ) ) ;
12095
12290
}
12096
12291
this . editorController . registerSelectionManager ( ) ;
12097
- this . registerResetListener ( ) ;
12098
- this . registerClickListener ( ) ;
12292
+ _classPrivateFieldGet ( this , _delegate ) . connectedCallback ( ) ;
12099
12293
autofocus ( this ) ;
12100
12294
}
12101
12295
}
12102
12296
disconnectedCallback ( ) {
12103
12297
var _this$editorControlle2 ;
12104
12298
( _this$editorControlle2 = this . editorController ) === null || _this$editorControlle2 === void 0 || _this$editorControlle2 . unregisterSelectionManager ( ) ;
12105
- this . unregisterResetListener ( ) ;
12106
- return this . unregisterClickListener ( ) ;
12299
+ _classPrivateFieldGet ( this , _delegate ) . disconnectedCallback ( ) ;
12107
12300
}
12108
12301
12109
12302
// Form support
12110
12303
12111
- registerResetListener ( ) {
12112
- this . resetListener = this . resetBubbled . bind ( this ) ;
12113
- return window . addEventListener ( "reset" , this . resetListener , false ) ;
12304
+ checkValidity ( ) {
12305
+ return _classPrivateFieldGet ( this , _delegate ) . checkValidity ( ) ;
12114
12306
}
12115
- unregisterResetListener ( ) {
12116
- return window . removeEventListener ( "reset" , this . resetListener , false ) ;
12307
+ reportValidity ( ) {
12308
+ return _classPrivateFieldGet ( this , _delegate ) . reportValidity ( ) ;
12117
12309
}
12118
- registerClickListener ( ) {
12119
- this . clickListener = this . clickBubbled . bind ( this ) ;
12120
- return window . addEventListener ( "click" , this . clickListener , false ) ;
12310
+ setCustomValidity ( validationMessage ) {
12311
+ _classPrivateFieldGet ( this , _delegate ) . setCustomValidity ( validationMessage ) ;
12121
12312
}
12122
- unregisterClickListener ( ) {
12123
- return window . removeEventListener ( "click" , this . clickListener , false ) ;
12124
- }
12125
- resetBubbled ( event ) {
12126
- if ( event . defaultPrevented ) return ;
12127
- if ( event . target !== this . form ) return ;
12128
- return this . reset ( ) ;
12313
+ formDisabledCallback ( disabled ) {
12314
+ if ( this . inputElement ) {
12315
+ this . inputElement . disabled = disabled ;
12316
+ }
12317
+ this . toggleAttribute ( "contenteditable" , ! disabled ) ;
12129
12318
}
12130
- clickBubbled ( event ) {
12131
- if ( event . defaultPrevented ) return ;
12132
- if ( this . contains ( event . target ) ) return ;
12133
- const label = findClosestElementFromNode ( event . target , {
12134
- matchingSelector : "label"
12135
- } ) ;
12136
- if ( ! label ) return ;
12137
- if ( ! Array . from ( this . labels ) . includes ( label ) ) return ;
12138
- return this . focus ( ) ;
12319
+ formResetCallback ( ) {
12320
+ this . reset ( ) ;
12139
12321
}
12140
12322
reset ( ) {
12141
12323
this . value = this . defaultValue ;
12142
12324
}
12143
12325
}
12326
+ _defineProperty ( TrixEditorElement , "formAssociated" , "ElementInternals" in window ) ;
12144
12327
12145
12328
var elements = /*#__PURE__*/ Object . freeze ( {
12146
12329
__proto__ : null ,
0 commit comments