web-internationalization 2.0.1
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/index.d.ts +173 -0
- package/index.js +1 -0
- package/package.json +194 -0
- package/readme.md +293 -0
- package/type.d.ts +31 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { HTMLItem, Lock, Logger, Mapping } from 'clientnode';
|
|
2
|
+
import { WebComponentAPI } from 'web-component-wrapper/type';
|
|
3
|
+
import { Web } from 'web-component-wrapper/Web';
|
|
4
|
+
import { DefaultOptions, Options, Replacement } from './type';
|
|
5
|
+
export declare const log: Logger;
|
|
6
|
+
/**
|
|
7
|
+
* This plugin holds all needed methods to extend a website for
|
|
8
|
+
* internationalization.
|
|
9
|
+
* @property _defaultOptions - Options extended by the options given to the
|
|
10
|
+
* initializer method.
|
|
11
|
+
* @property _defaultOptions.currentLanguageIndicatorClassName - Class name
|
|
12
|
+
* which marks current language switcher button or link.
|
|
13
|
+
* @property _defaultOptions.currentLanguagePattern - Saves a pattern to
|
|
14
|
+
* recognize current language marker.
|
|
15
|
+
* @property _defaultOptions.default - Initial language to use.
|
|
16
|
+
* @property _defaultOptions.useEffect - Indicates whether a fade effect
|
|
17
|
+
* should be performed.
|
|
18
|
+
* @property _defaultOptions.initial - Initial set language (if omitted it will
|
|
19
|
+
* be determined based on environment information).
|
|
20
|
+
* @property _defaultOptions.languageHashPrefix - Hash prefix to determine
|
|
21
|
+
* current active language by url.
|
|
22
|
+
* @property _defaultOptions.languageMapping - A mapping of alternate language
|
|
23
|
+
* descriptions.
|
|
24
|
+
* @property _defaultOptions.lockDescription - Lock description.
|
|
25
|
+
* @property _defaultOptions.preReplacementLanguagePattern - Pattern to
|
|
26
|
+
* introduce a pre replacement language node.
|
|
27
|
+
* @property _defaultOptions.replaceDomNodeNames - Tag names which indicates
|
|
28
|
+
* dom nodes which should be replaced.
|
|
29
|
+
* @property _defaultOptions.replacementDomNodeNames - Dom node tag name which
|
|
30
|
+
* should be interpreted as a hidden alternate language node (contains text in
|
|
31
|
+
* another language).
|
|
32
|
+
* @property _defaultOptions.replacementLanguagePattern - Text pattern to
|
|
33
|
+
* introduce a post replacement node.
|
|
34
|
+
* @property _defaultOptions.selection - List of all supported languages.
|
|
35
|
+
* @property _defaultOptions.selectors - Mapping of needed dom node selectors.
|
|
36
|
+
* @property _defaultOptions.selectors.knownTranslation - Selector to find
|
|
37
|
+
* known translation sections.
|
|
38
|
+
* @property _defaultOptions.sessionDescription - Description to save current
|
|
39
|
+
* language in session storage.
|
|
40
|
+
* @property _defaultOptions.templateDelimiter - Template delimiter to
|
|
41
|
+
* recognize dynamic content.
|
|
42
|
+
* @property _defaultOptions.templateDelimiter.pre - Delimiter which introduces
|
|
43
|
+
* a dynamic expression.
|
|
44
|
+
* @property _defaultOptions.templateDelimiter.post - Delimiter which finishes
|
|
45
|
+
* a dynamic expression.
|
|
46
|
+
* @property options - Finally configured given options.
|
|
47
|
+
* @property currentLanguage - Saves the current language.
|
|
48
|
+
* @property knownTranslations - Saves a mapping of known language strings and
|
|
49
|
+
* their corresponding translations, to boost language replacements or saves
|
|
50
|
+
* redundant replacements in dom tree.
|
|
51
|
+
* @property lock - Lock instance when updating dom noes.
|
|
52
|
+
* @property _domNodesToFade - Saves all dom nodes which should be animated.
|
|
53
|
+
* @property _replacements - Saves all text nodes which should be replaced.
|
|
54
|
+
* @property _textNodesWithKnownTranslation - Saves a mapping of known text
|
|
55
|
+
* snippets to their corresponding $-extended dom nodes.
|
|
56
|
+
*/
|
|
57
|
+
export declare class Internationalization<TElement = HTMLElement, ExternalProperties extends Mapping<unknown> = Mapping<unknown>, InternalProperties extends Mapping<unknown> = Mapping<unknown>> extends Web<TElement, ExternalProperties, InternalProperties> {
|
|
58
|
+
static _name: string;
|
|
59
|
+
static _defaultOptions: DefaultOptions;
|
|
60
|
+
readonly self: typeof Internationalization;
|
|
61
|
+
switchLanguageButtonDomNodes: NodeListOf<HTMLAnchorElement> | null;
|
|
62
|
+
currentLanguage: string;
|
|
63
|
+
knownTranslations: Mapping;
|
|
64
|
+
lock: Lock<string | undefined>;
|
|
65
|
+
options: Options;
|
|
66
|
+
onEnsure: (language: string) => Promise<void>;
|
|
67
|
+
onSwitch: (oldLanguage: string, newLanguage: string) => Promise<void>;
|
|
68
|
+
onEnsured: (language: string) => void;
|
|
69
|
+
onSwitched: (oldLanguage: string, newLanguage: string) => void;
|
|
70
|
+
_domNodesToFade: Array<HTMLElement>;
|
|
71
|
+
_replacements: Array<Replacement>;
|
|
72
|
+
_textNodesWithKnownTranslation: Mapping<Array<HTMLItem>>;
|
|
73
|
+
/**
|
|
74
|
+
* Triggered when ever a given attribute has changed and triggers to update
|
|
75
|
+
* configured dom content.
|
|
76
|
+
* @param name - Attribute name which was updates.
|
|
77
|
+
* @param newValue - New updated value.
|
|
78
|
+
*/
|
|
79
|
+
onUpdateAttribute(name: string, newValue: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* Initializes the component. Current language is set and later needed dom
|
|
82
|
+
* nodes are grabbed.
|
|
83
|
+
*/
|
|
84
|
+
connectedCallback(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Switches the current language to given language. This method is mutual
|
|
87
|
+
* synchronized.
|
|
88
|
+
* @param language - New language as string or "true". If set to "true" it
|
|
89
|
+
* indicates that the dom tree should be checked again current language to
|
|
90
|
+
* ensure every text node has right content.
|
|
91
|
+
* @param ensure - Indicates if a switch effect should be avoided.
|
|
92
|
+
* @returns Returns the current instance wrapped in a promise.
|
|
93
|
+
*/
|
|
94
|
+
switch(language: string | true, ensure?: boolean): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Ensures current selected language.
|
|
97
|
+
* @returns Promise resolving to nothing when switching as finished.
|
|
98
|
+
*/
|
|
99
|
+
refresh(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Depending on activated switching effect this method initialized the
|
|
102
|
+
* effect of replace all text string directly.
|
|
103
|
+
* @param language - New language to use.
|
|
104
|
+
* @param ensure - Indicates if current language should be ensured again
|
|
105
|
+
* every text node content.
|
|
106
|
+
* @returns Returns the current instance wrapped in a promise.
|
|
107
|
+
*/
|
|
108
|
+
_handleSwitchEffect(language: string, ensure: boolean): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Moves pre replacement dom nodes into next dom node behind translation
|
|
111
|
+
* text to use the same translation algorithm for both.
|
|
112
|
+
*/
|
|
113
|
+
_movePreReplacementNodes(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Collects all text nodes which should be replaced later.
|
|
116
|
+
* @param language - New language to use.
|
|
117
|
+
* @param ensure - Indicates if the whole dom should be checked again
|
|
118
|
+
* current language to ensure every text node has right content.
|
|
119
|
+
*/
|
|
120
|
+
_collectTextNodesToReplace(language: string, ensure: boolean): void;
|
|
121
|
+
/**
|
|
122
|
+
* Iterates all text nodes in language known area with known translations.
|
|
123
|
+
*/
|
|
124
|
+
_registerKnownTextNodes(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Normalizes a given language string.
|
|
127
|
+
* @param language - New language to use.
|
|
128
|
+
* @returns Returns the normalized version of given language.
|
|
129
|
+
*/
|
|
130
|
+
_normalizeLanguage(language: string): string;
|
|
131
|
+
/**
|
|
132
|
+
* Determines a useful initial language depending on session and browser
|
|
133
|
+
* settings.
|
|
134
|
+
* @returns Returns the determined language.
|
|
135
|
+
*/
|
|
136
|
+
_determineUsefulLanguage(): string;
|
|
137
|
+
/**
|
|
138
|
+
* Registers a text node to change its content with given replacement.
|
|
139
|
+
* @param currentTextNodeToTranslate - Text node with content to
|
|
140
|
+
* translate.
|
|
141
|
+
* @param currentDomNode - A comment node with replacement content.
|
|
142
|
+
* @param match - A matching array of replacement's text content.
|
|
143
|
+
* @param currentLanguageDomNode - A potential given text node indicating
|
|
144
|
+
* the language of given text node.
|
|
145
|
+
*/
|
|
146
|
+
_registerTextNodeToChange(currentTextNodeToTranslate: HTMLItem, currentDomNode: HTMLItem | null, match: Array<string>, currentLanguageDomNode: HTMLItem | null): void;
|
|
147
|
+
/**
|
|
148
|
+
* Checks if last text node has a language indication comment node. This
|
|
149
|
+
* function is called after each parsed dom text node.
|
|
150
|
+
* @param lastTextNodeToTranslate - Last text node to check.
|
|
151
|
+
* @param lastLanguageDomNode - A potential given language indication
|
|
152
|
+
* commend node.
|
|
153
|
+
* @param ensure - Indicates if current language should be ensured again
|
|
154
|
+
* every text node content.
|
|
155
|
+
* @returns Returns the retrieved or newly created language indicating
|
|
156
|
+
* comment node.
|
|
157
|
+
*/
|
|
158
|
+
_ensureLastTextNodeHavingLanguageIndicator(lastTextNodeToTranslate: HTMLItem | null, lastLanguageDomNode: HTMLItem | null, ensure: boolean): HTMLItem | null;
|
|
159
|
+
/**
|
|
160
|
+
* Performs the low level text replacements for switching to given
|
|
161
|
+
* language.
|
|
162
|
+
* @param language - The new language to switch to.
|
|
163
|
+
*/
|
|
164
|
+
_switchLanguage(language: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* Switches the current language indicator in language switch triggered dom
|
|
167
|
+
* nodes.
|
|
168
|
+
* @param language - The new language to switch to.
|
|
169
|
+
*/
|
|
170
|
+
_switchCurrentLanguageIndicator(language: string): void;
|
|
171
|
+
}
|
|
172
|
+
export declare const api: WebComponentAPI<HTMLElement, Mapping<unknown>, Mapping<unknown>, typeof Web>;
|
|
173
|
+
export default Internationalization;
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter((function(path){return eval("require.main.paths").includes(path)}))))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/initializerDefineProperty","@babel/runtime/helpers/applyDecoratedDescriptor","@babel/runtime/helpers/initializerWarningHelper","clientnode","clientnode/property-types","@babel/runtime/helpers/extends","@babel/runtime/helpers/asyncToGenerator","@babel/runtime/helpers/inheritsLoose","@babel/runtime/regenerator"],t);else{var r="object"==typeof exports?t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator")):t(e["@babel/runtime/helpers/initializerDefineProperty"],e["@babel/runtime/helpers/applyDecoratedDescriptor"],e["@babel/runtime/helpers/initializerWarningHelper"],e.clientnode,e["clientnode/property-types"],e["@babel/runtime/helpers/extends"],e["@babel/runtime/helpers/asyncToGenerator"],e["@babel/runtime/helpers/inheritsLoose"],e["@babel/runtime/regenerator"]);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,((__WEBPACK_EXTERNAL_MODULE__4__,__WEBPACK_EXTERNAL_MODULE__5__,__WEBPACK_EXTERNAL_MODULE__6__,__WEBPACK_EXTERNAL_MODULE__0__,__WEBPACK_EXTERNAL_MODULE__1__,__WEBPACK_EXTERNAL_MODULE__7__,__WEBPACK_EXTERNAL_MODULE__9__,__WEBPACK_EXTERNAL_MODULE__10__,__WEBPACK_EXTERNAL_MODULE__11__)=>(()=>{var __webpack_modules__=[e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__0__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__1__},function(module,__unused_webpack_exports,__webpack_require__){var __webpack_dirname__="/",e,t,r;if(module=__webpack_require__.nmd(module),null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&null!=__webpack_dirname__&&(module.paths=eval("require.main.paths").concat(module.paths.filter((function(path){return eval("require.main.paths").includes(path)}))))}if(null==window)var window=void 0===__webpack_require__.g||null===__webpack_require__.g?{}:__webpack_require__.g;module.exports=(e=__webpack_require__(7),t=__webpack_require__(0),r=__webpack_require__(1),function(){var n=[function(t){t.exports=e},function(e){e.exports=t},function(e){e.exports=r}],o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};i.r(s),i.d(s,{property:function(){return c}});var a=i(0),l=i.n(a),p=i(1),_=i(2);function c(e){return void 0===e&&(e={}),e=l()({readAttribute:!0,type:_.string},e),function(t,r){if("string"==typeof r){var n,o=t.self||t.constructor;if(e.readAttribute){Object.prototype.hasOwnProperty.call(o,"observedAttributes")||(o.observedAttributes=o.observedAttributes?[].concat(o.observedAttributes):[]);var i=(0,p.camelCaseToDelimited)(r);o.observedAttributes&&!o.observedAttributes.includes(i)&&o.observedAttributes.push(i)}e.type&&(Object.prototype.hasOwnProperty.call(o,"propertyTypes")||(o.propertyTypes=o.propertyTypes?l()({},o.propertyTypes):{}),!o.propertyTypes||!e.update&&Object.prototype.hasOwnProperty.call(o,r)||(o.propertyTypes[r]=e.type)),e.writeAttribute&&(Object.prototype.hasOwnProperty.call(o,"propertiesToReflectAsAttributes")||(o.propertiesToReflectAsAttributes=o.propertiesToReflectAsAttributes?(0,p.copy)(o.propertiesToReflectAsAttributes):[]),(e.update||o.propertiesToReflectAsAttributes instanceof Map&&!o.propertiesToReflectAsAttributes.has(r)||Array.isArray(o.propertiesToReflectAsAttributes)&&!o.propertiesToReflectAsAttributes.includes(r)||"object"==typeof o.propertiesToReflectAsAttributes&&!Object.prototype.hasOwnProperty.call(o.propertiesToReflectAsAttributes,r))&&("boolean"==typeof e.writeAttribute?e.writeAttribute&&o.propertyTypes&&Object.prototype.hasOwnProperty.call(o.propertyTypes,r)&&(n=o.propertyTypes[r]):n=e.writeAttribute,void 0!==n&&(Array.isArray(o.propertiesToReflectAsAttributes)&&(!0===e.writeAttribute?o.propertiesToReflectAsAttributes.push(r):o.normalizePropertyTypeList&&(o.propertiesToReflectAsAttributes=o.normalizePropertyTypeList(o.propertiesToReflectAsAttributes))),o.propertiesToReflectAsAttributes instanceof Map&&o.propertiesToReflectAsAttributes.set(r,n),"object"==typeof o.propertiesToReflectAsAttributes&&(o.propertiesToReflectAsAttributes[r]=n)))),e.alias&&(Object.prototype.hasOwnProperty.call(o,"propertyAliases")||(o.propertyAliases=o.propertyAliases?l()({},o.propertyAliases):{}),!o.propertyAliases||!e.update&&Object.prototype.hasOwnProperty.call(o,r)||(o.propertyAliases[r]=e.alias))}}}return s.default=c,s}())},function(module,__unused_webpack_exports,__webpack_require__){var __webpack_dirname__="/",e,t,r,n,i,s,o,a,l;if(module=__webpack_require__.nmd(module),null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&null!=__webpack_dirname__&&(module.paths=eval("require.main.paths").concat(module.paths.filter((function(path){return eval("require.main.paths").includes(path)}))))}if(null==window)var window=void 0===__webpack_require__.g||null===__webpack_require__.g?{}:__webpack_require__.g;module.exports=(e=__webpack_require__(9),t=__webpack_require__(4),r=__webpack_require__(7),n=__webpack_require__(10),i=__webpack_require__(5),s=__webpack_require__(6),o=__webpack_require__(11),a=__webpack_require__(0),l=__webpack_require__(1),function(){var p=[function(e){e.exports=r},function(e){e.exports=a},function(e){e.exports=l},function(e){e.exports=n},function(e,t,r){var n=r(0),o=r.n(n),i=r(1),s=r(2);t.default=function(e){return void 0===e&&(e={}),e=o()({readAttribute:!0,type:s.string},e),function(t,r){if("string"==typeof r){var n,s=t.self||t.constructor;if(e.readAttribute){Object.prototype.hasOwnProperty.call(s,"observedAttributes")||(s.observedAttributes=s.observedAttributes?[].concat(s.observedAttributes):[]);var a=(0,i.camelCaseToDelimited)(r);s.observedAttributes&&!s.observedAttributes.includes(a)&&s.observedAttributes.push(a)}e.type&&(Object.prototype.hasOwnProperty.call(s,"propertyTypes")||(s.propertyTypes=s.propertyTypes?o()({},s.propertyTypes):{}),!s.propertyTypes||!e.update&&Object.prototype.hasOwnProperty.call(s,r)||(s.propertyTypes[r]=e.type)),e.writeAttribute&&(Object.prototype.hasOwnProperty.call(s,"propertiesToReflectAsAttributes")||(s.propertiesToReflectAsAttributes=s.propertiesToReflectAsAttributes?(0,i.copy)(s.propertiesToReflectAsAttributes):[]),(e.update||s.propertiesToReflectAsAttributes instanceof Map&&!s.propertiesToReflectAsAttributes.has(r)||Array.isArray(s.propertiesToReflectAsAttributes)&&!s.propertiesToReflectAsAttributes.includes(r)||"object"==typeof s.propertiesToReflectAsAttributes&&!Object.prototype.hasOwnProperty.call(s.propertiesToReflectAsAttributes,r))&&("boolean"==typeof e.writeAttribute?e.writeAttribute&&s.propertyTypes&&Object.prototype.hasOwnProperty.call(s.propertyTypes,r)&&(n=s.propertyTypes[r]):n=e.writeAttribute,void 0!==n&&(Array.isArray(s.propertiesToReflectAsAttributes)&&(!0===e.writeAttribute?s.propertiesToReflectAsAttributes.push(r):s.normalizePropertyTypeList&&(s.propertiesToReflectAsAttributes=s.normalizePropertyTypeList(s.propertiesToReflectAsAttributes))),s.propertiesToReflectAsAttributes instanceof Map&&s.propertiesToReflectAsAttributes.set(r,n),"object"==typeof s.propertiesToReflectAsAttributes&&(s.propertiesToReflectAsAttributes[r]=n)))),e.alias&&(Object.prototype.hasOwnProperty.call(s,"propertyAliases")||(s.propertyAliases=s.propertyAliases?o()({},s.propertyAliases):{}),!s.propertyAliases||!e.update&&Object.prototype.hasOwnProperty.call(s,r)||(s.propertyAliases[r]=e.alias))}}}},function(t){t.exports=e},function(e){e.exports=o},,function(e){e.exports=t},function(e){e.exports=i},function(e){e.exports=s}],_={};function c(e){var t=_[e];if(void 0!==t)return t.exports;var r=_[e]={exports:{}};return p[e](r,r.exports,c),r.exports}c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,{a:t}),t},c.d=function(e,t){for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var u={};c.r(u),c.d(u,{GenericHTMLElement:function(){return I},Web:function(){return U},api:function(){return W}});var d,h,f,b,m=c(5),y=c.n(m),g=c(8),E=c.n(g),P=c(0),v=c.n(P),A=c(3),O=c.n(A),T=c(9),w=c.n(T),D=(c(10),c(6)),M=c.n(D),C=c(1),L=c(2),R=c(4);function x(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return N(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var I="undefined"==typeof HTMLElement?function(){}:HTMLElement,U=(d=(0,R.default)({type:L.boolean,writeAttribute:!0}),b=function(e){function t(){var r;return(r=e.call(this)||this).batchAttributeUpdates=!0,r.batchPropertyUpdates=!0,r.batchUpdates=!0,r.batchedAttributeUpdateRunning=!0,r.batchedPropertyUpdateRunning=!0,r.batchedUpdateRunning=!0,r.parent=null,r.rootInstance=null,r.scope=v()({},C.UTILITY_SCOPE),r.domNodeEventBindings=new Map,r.domNodeTemplateCache=new Map,r.externalProperties={},r.ignoreAttributeUpdateObservations=!1,r.internalProperties={},r.outputEventNames=new Set,r.instance=null,E()(r,"isRoot",f,r),r.root=void 0,r.runDomConnectionAndRenderingInSameEventQueue=!1,r.self=t,r.slots={},r.self=r.constructor,r.self._propertiesToReflectAsAttributes||(r.self._propertiesToReflectAsAttributes=r.self.normalizePropertyTypeList(r.self.propertiesToReflectAsAttributes)),r.generateAliasIndex(),r.root=r,r.defineGetterAndSetterInterface(),r}O()(t,e);var r=t.prototype;return r.attributeChangedCallback=function(e,t,r){this.ignoreAttributeUpdateObservations||t===r||this.onUpdateAttribute(e,r)},r.onUpdateAttribute=function(e,t){var r=this;this.evaluateStringOrNullAndSetAsProperty(e,t),this.batchAttributeUpdates?this.batchedAttributeUpdateRunning||this.batchedUpdateRunning||(this.batchedAttributeUpdateRunning=!0,this.batchedUpdateRunning=!0,(0,C.timeout)((function(){r.batchedAttributeUpdateRunning=!1,r.batchedUpdateRunning=!1,r.render("attributeChanged")}))):this.render("attributeChanged")},r.connectedCallback=function(){var e=this;try{this.isConnected=!0}catch(e){}this.parent=this,this.rootInstance=this,this.attachEventHandler(),this.self.determineRootBinding&&this.determineRootBinding(),this.self.applyRootBinding&&this.isRoot&&(this.determineRenderScope(),this.applyBinding(this,this.scope)),this.batchedAttributeUpdateRunning=!1,this.batchedPropertyUpdateRunning=!1,this.batchedUpdateRunning=!1,this.grabGivenSlots(),this.reflectExternalProperties(this.externalProperties),this.runDomConnectionAndRenderingInSameEventQueue?this.render("connected"):(0,C.timeout)((function(){e.render("connected")}))},r.disconnectedCallback=function(){try{this.isConnected=!1}catch(e){}for(var e,t=x(this.domNodeEventBindings.values());!(e=t()).done;)for(var r,n=x(e.value.values());!(r=n()).done;)(0,r.value)();this.slots={}},r.defineGetterAndSetterInterface=function(){for(var e,t=this,r=function(){var r=e.value;Object.prototype.hasOwnProperty.call(t,r)&&t.setPropertyValue(r,t[r]),Object.defineProperty(t,r,{configurable:!0,get:function(){return t.getPropertyValue(r)},set:function(e){t.setPropertyValue(r,e),t.triggerPropertySpecificRendering(r,e)}})},n=x((0,C.unique)(Object.keys(this.self.propertyTypes).concat(this.self._propertyAliasIndex?Object.keys(this.self._propertyAliasIndex):[])));!(e=n()).done;)r()},r.getPropertyAlias=function(e){return this.self._propertyAliasIndex&&Object.prototype.hasOwnProperty.call(this.self._propertyAliasIndex,e)?this.self._propertyAliasIndex[e]:null},r.getPropertyValue=function(e){var r,n,o=null!=(r=this.instance)&&null!=(r=r.current)&&r.properties&&(Object.prototype.hasOwnProperty.call(!t.propertyTypes,e)||Object.prototype.hasOwnProperty.call(this.instance.current.properties,e))?this.instance.current.properties[e]:this.externalProperties[e];return null!=(n=this.instance)&&null!=(n=n.current)&&n.state&&Object.prototype.hasOwnProperty.call(this.instance.current.state,e)?this.instance.current.state[e]:o},r.setExternalPropertyValue=function(e,t){this.externalProperties[e]=t;var r=this.getPropertyAlias(e);r&&(this.externalProperties[r]=t)},r.setInternalPropertyValue=function(e,t){this.internalProperties[e]=t;var r=this.getPropertyAlias(e);r&&(this.internalProperties[r]=t)},r.setPropertyValue=function(e,t){var r;this.reflectProperties(((r={})[e]=t,r)),this.setInternalPropertyValue(e,t)},r.triggerPropertySpecificRendering=function(e,t){var r=this;if(this.batchPropertyUpdates)this.batchedPropertyUpdateRunning||this.batchedUpdateRunning||(this.batchedPropertyUpdateRunning=!0,this.batchedUpdateRunning=!0,(0,C.timeout)((function(){void 0!==t&&r.isStateProperty(e)?(r.render("preStatePropertyChanged"),(0,C.timeout)((function(){r.setInternalPropertyValue(e,void 0),r.batchedPropertyUpdateRunning=!1,r.batchedUpdateRunning=!1,r.render("postStatePropertyChanged"),r.triggerOutputEvents()}))):(r.batchedPropertyUpdateRunning=!1,r.batchedUpdateRunning=!1,r.render("propertyChanged"),r.triggerOutputEvents())})));else{var n=this.isStateProperty(e);this.render(n?"preStatePropertyChanged":"propertyChanged"),void 0!==t&&n&&(this.setInternalPropertyValue(e,void 0),this.render("postStatePropertyChanged")),this.triggerOutputEvents()}},r.applyBinding=function(e,t){var r=this;if(e.getAttributeNames)for(var n,o=function(){var o=n.value,i="";if(o.startsWith("data-bind-")?i=o.substring(10):o.startsWith("bind-")&&(i=o.substring(5)),i){var s=e.getAttribute(o);if(null===s)return 0;if(i.startsWith("attribute-")||i.startsWith("property-")){var a=(0,C.evaluate)(s,t,!1,!0,e);if(a.error)return console.warn('Error occurred during processing given attribute binding "'+o+'" on node:',e,a.error),0;i.startsWith("attribute-")?e.setAttribute(i.substring(10),a.result):e[(0,C.delimitedToCamelCase)(i.substring(9))]=a.result}else if(i.startsWith("on-")){i=(0,C.delimitedToCamelCase)(i.substring(3)),t=v()({console,event:void 0,parameters:void 0},t);var l=(0,C.compile)(s,t,!0,!0,e);l.error?console.warn("Error occurred during compiling given event",'binding "'+o+'" on node:',e,l.error):r.addSecureEventListener(e,i,(function(){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];t.event=n[0],t.parameters=n;try{l.templateFunction.apply(l,l.originalScopeNames.map((function(e){return t[e]})))}catch(t){console.warn("Error occurred during processing","given event binding",'"'+o+'" on node:',e,'Given expression "'+s+'" could',"not be evaluated with given scope",'names "'+l.scopeNames.join('", "')+'": '+(0,C.represent)(t))}}))}}},i=x(e.getAttributeNames());!(n=i()).done;)o()},r.applyBindings=function(e,t,r){for(void 0===r&&(r=!0);e;){var n;null==(n=e.attributes)||!n.length||!r&&e.getAttribute("slot")||this.applyBinding(e,t),e.nodeName.toLowerCase().includes("-")||this.applyBindings(e.firstChild,t),e=e.nextSibling}},r.compileDomNodeTemplate=function(e,t,r){void 0===t&&(t=[]),void 0===r&&(r={}),r=v()({ignoreComponents:!0,ignoreNestedComponents:!0,unsafe:this.self.renderUnsafe},r);var n=e.nodeName.toLowerCase();if(r.ignoreComponents&&n.includes("-"))return null;if(r.unsafe){var o=e.innerHTML;if(!o&&e.template&&(o=e.template),this.self.hasCode(o)){var i=(0,C.compile)("`"+o+"`",t);return{domNode:e,children:[],error:i.error,scopeNames:i.scopeNames,template:o,templateFunction:i.templateFunction}}return null}var s=null;if("#text"===n){var a=e.textContent;a&&this.self.hasCode(a)&&(s=a.replace(/ /g," ").trim())}var l=[],p={children:l,domNode:e};if(s){var _=(0,C.compile)("`"+s+"`",t);p.error=_.error,p.scopeNames=_.scopeNames,p.template=s,p.templateFunction=_.templateFunction}for(var c=e.firstChild;c;){if(!r.filter||r.filter(c)){var u=this.compileDomNodeTemplate(c,t,v()({},r,{ignoreComponents:r.ignoreNestedComponents}));u&&l.push(u)}c=c.nextSibling}return p},r.evaluateCompiledDomNodeTemplate=function(e,t){var r=e.domNode,n=e.error,o=e.templateFunction,i=e.scopeNames;if(!o||!i)return null;if(n)return console.warn("Error occurred during compiling node content:",n),null;var s=null;try{s=o.apply(void 0,i.map((function(e){return t[e]})))}catch(n){console.warn('Error occurred when "'+this.self._name+'" is running','"'+String(o)+'": with bound','names "'+i.join('", "')+'":','"'+n+'". Rendering node:',r)}return s},r.evaluateDomNodeTemplate=function(e,t,r){var n=this;void 0===t&&(t={}),void 0===r&&(r={});var o=(r=v()({domNodeTemplateCache:this.domNodeTemplateCache,ignoreComponents:!0,ignoreNestedComponents:!0,unsafe:this.self.renderUnsafe},r)).domNodeTemplateCache;if(!o.has(e)){var i={filter:r.filter,ignoreComponents:r.ignoreComponents,ignoreNestedComponents:r.ignoreNestedComponents,unsafe:r.unsafe},s=this.compileDomNodeTemplate(e,t,i);s&&o.set(e,s)}if(o.has(e)){var a=o.get(e),l=this.evaluateCompiledDomNodeTemplate(a,t);if(null!==l&&(r.unsafe&&e.innerHTML?e.innerHTML=l:e.textContent=l),a.children.length){var p=function(e){for(var r,o=x(e);!(r=o()).done;){var i=r.value,s=n.evaluateCompiledDomNodeTemplate(i,t);null!==s&&(i.domNode.textContent=s),i.children.length&&p(i.children)}};p(a.children)}}r.applyBindings&&this.applyBindings(e,t)},t.replaceDomNodes=function(e,r){for(var n,o=x([].concat(r).reverse());!(n=o()).done;){var i,s=n.value;t.trimSlots&&s.nodeType===Node.TEXT_NODE&&""===(null==(i=s.nodeValue)?void 0:i.trim())||e.after(s)}e.remove()},t.unwrapDomNode=function(e){for(var t=e.parentNode,r=[];e.firstChild;)r.push(e.firstChild),t.insertBefore(e.firstChild,e);return t.removeChild(e),r},r.addSecureEventListener=function(e,t,r){var n=this;this.domNodeEventBindings.has(e)||this.domNodeEventBindings.set(e,new Map);var o=this.domNodeEventBindings.get(e),i=null==o?void 0:o.get(t);i&&i!==r&&i(),null==o||o.set(t,(function(){e.removeEventListener(t,r),o.delete(t),0===o.size&&n.domNodeEventBindings.delete(e)})),e.addEventListener(t,r)},r.determineRootBinding=function(){for(var e=this.parentNode;e;)(e instanceof t||e.nodeName.includes("-")||null===e.parentNode&&"[object ShadowRoot]"===e.toString())&&(this.rootInstance===this?(this.parent=e,this.rootInstance=e,this.setPropertyValue("isRoot",!1)):this.rootInstance=e),e=e.parentNode},t.hasCode=function(e){return"string"==typeof e&&e.includes("${")&&e.includes("}")&&/\${[\s\S]+}/.test(e)},t.normalizePropertyTypeList=function(e){if("string"==typeof e&&(e=[e]),Array.isArray(e)){for(var r,n=e,o=new Map,i=x(n);!(r=i()).done;){var s=r.value;Object.prototype.hasOwnProperty.call(t.propertyTypes,s)&&o.set(s,t.propertyTypes[s])}return o}return(0,C.convertPlainObjectToMap)(e)},r.attachEventHandler=function(){if(null!==this.self.eventToPropertyMapping){var e=this.attachExplicitDefinedOutputEventHandler();this.attachImplicitDefinedOutputEventHandler(!e)}},r.attachExplicitDefinedOutputEventHandler=function(){var e=this;if(!this.self.eventToPropertyMapping)return!1;for(var t=!1,r=function(){var r=o[n];Object.prototype.hasOwnProperty.call(e.internalProperties,r)||(t=!0,e.outputEventNames.add(r),e.setInternalPropertyValue(r,y()(M().mark((function t(){var n,o,i,s,a=arguments;return M().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(n=a.length,o=new Array(n),i=0;i<n;i++)o[i]=a[i];return t.next=1,e.reflectEventToProperties(r,o);case 1:(s=t.sent)&&(o[0]=s),e.forwardEvent(r,o);case 2:case"end":return t.stop()}}),t)})))))},n=0,o=Object.keys(this.self.eventToPropertyMapping);n<o.length;n++)r();return t},r.attachImplicitDefinedOutputEventHandler=function(e){var t=this;void 0===e&&(e=!0);for(var r=function(){var r=o[n],i=r[0],s=r[1];Object.prototype.hasOwnProperty.call(t.internalProperties,i)||![L.func,"function"].includes(s)||t.self.renderProperties.includes(i)||(t.outputEventNames.add(i),t.setInternalPropertyValue(i,(function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];e&&t.reflectEventToProperties(i,n),t.forwardEvent(i,n)})))},n=0,o=Object.entries(this.self.propertyTypes);n<o.length;n++)r()},r.triggerOutputEvents=function(){for(var e,t=x(this.outputEventNames);!(e=t()).done;){var r=e.value;this.forwardEvent(r,[this.externalProperties])}},r.forwardEvent=function(e,t){return e.length>3&&e.startsWith("on")&&(e=(0,C.lowerCase)(e.substring(2))),this.dispatchEvent(new CustomEvent(e,{detail:{parameters:t}}))},r.applySlots=function(e,t){for(var r=this,n=0,o=Array.from(e.querySelectorAll("slot"));n<o.length;n++){var i=o[n],s=i.getAttribute("name");if(null===s||"default"===s)if(this.slots.default){if(this.self.renderSlots){if(this.self.evaluateSlots)for(var a,l=x(this.slots.default);!(a=l()).done;){var p=a.value;this.evaluateDomNodeTemplate(p,t)}this.self.replaceDomNodes(i,this.slots.default)}}else this.slots.default=this.self.unwrapDomNode(i).map((function(e){return r.grabSlotContent(e)}));else this.slots[s]?this.self.renderSlots&&(this.self.evaluateSlots&&this.evaluateDomNodeTemplate(this.slots[s],t),this.self.replaceDomNodes(i,this.slots[s])):this.slots[s]=this.grabSlotContent(this.self.unwrapDomNode(i).filter((function(e){return"#text"!==e.nodeName.toLowerCase()}))[0])}},r.grabSlotContent=function(e){var t,r=L.node.firstElementChild?e:null;if(r&&"textarea"===(null==(t=r.firstElementChild)?void 0:t.nodeName.toLowerCase())&&(!r.firstElementChild.hasAttribute("data-no-template")||"false"===r.firstElementChild.getAttribute("data-no-template"))){var n=r.firstElementChild.value;r.classList.remove("web-component-template");var o=r.cloneNode();return r.classList.add("web-component-template"),o.innerHTML="",o.template=n,o}return this.self.cloneSlots?e.cloneNode(!0):e},r.grabGivenSlots=function(){var e=this;this.slots={};for(var t=0,r=Array.from(this.querySelectorAll("[slot]"));t<r.length;t++){for(var n,o=r[t],i=o.parentNode,s=!0;i;){if(i.nodeName.includes("-")){i===this&&(s=!1);break}i=i.parentNode}if(!s){var a=null==(n=o.getAttribute("slot"))?void 0:n.trim();this.slots[null!=a?a:o.nodeName.toLowerCase()]=this.grabSlotContent(o)}}this.slots.default?this.slots.default=[].concat(this.slots.default):this.childNodes.length>0?this.slots.default=Array.from(this.childNodes).map((function(t){return e.grabSlotContent(t)})):this.slots.default=[]},r.isStateProperty=function(e){var t;return Boolean((null==(t=this.instance)||null==(t=t.current)?void 0:t.state)&&(Object.prototype.hasOwnProperty.call(this.instance.current.state,e)||this.instance.current.state.modelState&&Object.prototype.hasOwnProperty.call(this.instance.current.state.modelState,e)))},r.generateAliasIndex=function(){if(!this.self._propertyAliasIndex){this.self._propertyAliasIndex=v()({},this.self.propertyAliases);for(var e=0,t=Object.entries(this.self._propertyAliasIndex);e<t.length;e++){var r=t[e],n=r[0],o=r[1];Object.prototype.hasOwnProperty.call(this.self._propertyAliasIndex,o)||(this.self._propertyAliasIndex[o]=n)}}},r.reflectExternalProperties=function(e){this.ignoreAttributeUpdateObservations=!0;for(var t=0,r=Object.entries(e);t<r.length;t++){var n,o=r[t],i=o[0],s=o[1];if(this.setExternalPropertyValue(i,s),this.isConnected){var a=(0,C.camelCaseToDelimited)(i);if(null!=(n=this.self._propertiesToReflectAsAttributes)&&n.has(i))switch(this.self._propertiesToReflectAsAttributes.get(i)){case L.boolean:case"boolean":s?""!==this.getAttribute(a)&&this.setAttribute(a,""):this.hasAttribute(a)&&this.removeAttribute(a);break;case L.func:case"function":break;case"json":if(s){var l=JSON.stringify(s);if(l&&this.getAttribute(a)!==l){this.setAttribute(a,l);break}}this.hasAttribute(a)&&this.removeAttribute(a);break;case L.number:case"number":if("number"!=typeof s||isNaN(s))this.hasAttribute(a)&&this.removeAttribute(a);else{var p=String(s);this.getAttribute(a)!==p&&this.setAttribute(a,p)}break;case L.string:case"string":s?this.getAttribute(a)!==s&&this.setAttribute(a,s):this.hasAttribute(a)&&this.removeAttribute(a);break;case L.any:case L.array:case L.arrayOf:case L.element:case L.elementType:case L.instanceOf:case L.node:case L.object:case"object":case L.objectOf:case L.shape:case L.exact:case L.symbol:default:if(s){var _=(0,C.represent)(s);if(_&&this.getAttribute(a)!==_){this.setAttribute(a,_);break}}this.hasAttribute(a)&&this.removeAttribute(a)}}}this.ignoreAttributeUpdateObservations=!1},r.reflectProperties=function(e){var t,r;if(this.reflectExternalProperties(e),null!=(t=this.instance)&&null!=(t=t.current)&&t.state&&"object"==typeof this.instance.current.state)for(var n,o=x(Object.keys(this.instance.current.state).concat(this.instance.current.state.modelState?Object.keys(this.instance.current.state.modelState):[]));!(n=o()).done;){var i=n.value;Object.prototype.hasOwnProperty.call(this.internalProperties,i)&&this.setInternalPropertyValue(i,void 0)}null!=(r=this.internalProperties.model)&&r.state&&(delete this.internalProperties.model.state,this.setInternalPropertyValue("model",this.internalProperties.model));for(var s,a=x(this.self.controllableProperties);!(s=a()).done;){var l=s.value;Object.prototype.hasOwnProperty.call(e,l)&&this.setInternalPropertyValue(l,e[l])}},r.reflectEventToProperties=function(){var e=y()(M().mark((function e(t,r){var n,o,i,s,a,l,p,_,c,u,d,h,f,b,m,y,g;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.batchUpdates,this.batchUpdates=!1,o=null,i=!1,!(this.self.eventToPropertyMapping&&Object.prototype.hasOwnProperty.call(this.self.eventToPropertyMapping,t)&&(0,C.isFunction)(this.self.eventToPropertyMapping[t]))){e.next=4;break}if(!((a=(s=this.self.eventToPropertyMapping)[t].apply(s,r.concat([this])))&&"then"in a&&(0,C.isFunction)(a.then))){e.next=2;break}return e.next=1,a;case 1:g=e.sent,e.next=3;break;case 2:g=a;case 3:l=g,i=!0,Array.isArray(l)?(o=l[0],this.reflectProperties(o),(0,C.extend)(!0,this.internalProperties,l[1])):null===l?i=!1:"object"==typeof l&&(o=l,this.reflectProperties(l));case 4:if(!i&&r.length>0&&(0,C.isObject)(r[0])){if(_=r[0],"persist"in r[0]&&(0,C.isFunction)(r[0].persist))for(_={},c=0,u=Object.keys(this.self.propertyTypes);c<u.length;c++)for(d=u[c],h=x([d].concat(null!==(b=this.getPropertyAlias(d))&&void 0!==b?b:[]));!(f=h()).done;)m=f.value,(y=r[0].currentTarget&&Object.prototype.hasOwnProperty.call(r[0].currentTarget,m)?r[0].currentTarget[m]:this.getPropertyValue(m))!==this.externalProperties[m]&&(_[m]=y);else[null,void 0].includes(null==(p=_.detail)?void 0:p.value)||(_=v()({},_.detail));o=_,this.reflectProperties(_)}return this.triggerRender("propertyReflected"),this.batchUpdates=n,e.abrupt("return",o);case 5:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),r.evaluateStringOrNullAndSetAsProperty=function(e,t){var r=this,n=e.startsWith("-"),o=n?e.substring(1):e,i=(0,C.delimitedToCamelCase)(o),s=this.getPropertyAlias(i);if(s&&Object.prototype.hasOwnProperty.call(this.self.propertyTypes,s)&&(i=s),Object.prototype.hasOwnProperty.call(this.self.propertyTypes,i)){var a=this.self.propertyTypes[i];if(n){if(t){var l=(0,C.evaluate)(t,v()({},C.UTILITY_SCOPE),!1,!0,this);l.error?(console.warn('Failed to process pre-evaluation attribute "'+e+'": '+l.error+'. Will be set to "undefined".'),this.setInternalPropertyValue(i,void 0)):(this.setInternalPropertyValue(i,l.result),this.setExternalPropertyValue(i,l.result))}}else switch(a){case L.boolean:case"boolean":var p=![null,"false"].includes(t);this.setInternalPropertyValue(i,p),this.setExternalPropertyValue(i,p);break;case L.func:case"function":var _,c=null,u=["data","event","firstArgument","firstParameter","options","scope","parameters"].concat(C.UTILITY_SCOPE_NAMES);if(t){var d=(0,C.compile)(t,u);c=d.error,_=d.templateFunction,c&&console.warn('Failed to compile given handler "'+e+'": '+c+".")}this.setInternalPropertyValue(i,(function(){for(var n=arguments.length,o=new Array(n),s=0;s<n;s++)o[s]=arguments[s];r.outputEventNames.has(i)&&r.reflectEventToProperties(i,o);var a=void 0;if(!c)try{var l;a=null==(l=_)?void 0:l.call.apply(l,[r,o[0],o[0],o[0],o[0],o[0],o[0],o].concat(C.UTILITY_SCOPE_VALUES))}catch(r){console.warn('Failed to evaluate function "'+e+'" with expression "'+t+'" and scope variables "'+u.join('", "')+'" set to "'+(0,C.represent)(o)+'": '+r+'. Set property to "undefined".')}return r.self.renderProperties.includes(i)||r.forwardEvent(i,o),a})),c||this.setExternalPropertyValue(i,_);break;case"json":if(t){var h;try{h=JSON.parse(t)}catch(c){console.warn('Error occurred during parsing given json attribute "'+e+'": '+(0,C.represent)(c));break}this.setInternalPropertyValue(i,h),this.setExternalPropertyValue(i,(0,C.copy)(h,!1,1))}else this.setInternalPropertyValue(i,null),this.setExternalPropertyValue(i,null);break;case L.number:case"number":if(null===t){this.setInternalPropertyValue(i,t),this.setExternalPropertyValue(i,t);break}var f=parseFloat(t);isNaN(f)&&(f=void 0),this.setInternalPropertyValue(i,f),this.setExternalPropertyValue(i,f);break;case L.string:case"string":this.setInternalPropertyValue(i,t),this.setExternalPropertyValue(i,t);break;case L.any:case L.array:case L.arrayOf:case L.element:case L.elementType:case L.instanceOf:case L.node:case L.object:case"object":case L.objectOf:case L.oneOf:case L.oneOfType:case L.shape:case L.exact:case L.symbol:default:if(t){var b=(0,C.evaluate)(t,{},!1,!0,this);if(b.error){console.warn('Error occurred during processing given attribute configuration "'+e+'":',b.error);break}this.setInternalPropertyValue(i,b.result),this.setExternalPropertyValue(i,(0,C.copy)(b.result,!1,1))}else this.hasAttribute(e)?(this.setInternalPropertyValue(i,!0),this.setExternalPropertyValue(i,!0)):(this.setInternalPropertyValue(i,null),this.setExternalPropertyValue(i,null))}}},r.triggerRender=function(e){var t=this;this.batchUpdates?this.batchedUpdateRunning||(this.batchedUpdateRunning=!0,(0,C.timeout)((function(){t.batchedUpdateRunning=!1,t.render(e)}))):this.render(e)},r.applyShadowRootIfNotExisting=function(){this.self.shadowDOM&&this.root===this&&(this.root=(!("attachShadow"in this)&&"ShadyDOM"in window?window.ShadyDOM.wrap(this):this).attachShadow((0,C.isObject)(this.self.shadowDOM)?this.self.shadowDOM:{mode:"open"}))},r.determineRenderScope=function(e){var t,r;void 0===e&&(e={}),this.scope=v()({},(null==(t=this.parent)?void 0:t.scope)||{},this.scope,this.internalProperties,((r={parent:this.parent,root:this.rootInstance,self:this})[(0,C.lowerCase)(this.self._name)||"instance"]=this,r),e),this.scope.scope=this.scope},r.render=function(e){if(void 0===e&&(e="unknown"),this.determineRenderScope(),!this.dispatchEvent(new CustomEvent("render",{detail:{reason:e,scope:this.scope}})))return Promise.resolve();var t=(0,C.evaluate)("`"+this.self.content+"`",this.scope);if(t.error)return console.warn("Failed to process template: "+t.error),Promise.resolve();this.applyShadowRootIfNotExisting();var r=document.createElement("div");return r.innerHTML=t.result,this.applySlots(r,v()({},this.scope,{parent:this})),this.root.innerHTML=r.innerHTML,this.applyBindings(this.root.firstChild,this.scope,this.self.renderSlots),Promise.resolve()},t}(I),b.applyRootBinding=!0,b.content="<slot>Please provide a template to transclude.</slot>",b.determineRootBinding=!0,b.shadowDOM=null,b.observedAttributes=[],b.controllableProperties=[],b.eventToPropertyMapping={},b.propertyAliases={},b.propertyTypes={onClick:L.func},b.propertiesToReflectAsAttributes=[],b.renderProperties=["children"],b.cloneSlots=!1,b.evaluateSlots=!1,b.renderSlots=!0,b.trimSlots=!0,b.renderUnsafe=!1,b._name="BaseWeb",b._propertyAliasIndex=void 0,b._propertiesToReflectAsAttributes=void 0,h=b,f=w()(h.prototype,"isRoot",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!0}}),h),W={component:U,register:function(e){void 0===e&&(e=(0,C.camelCaseToDelimited)(U._name)),customElements.define(e,U)}};return u.default=U,u}())},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__4__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__5__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__6__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__7__},,e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__9__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__10__},e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__11__}],__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Internationalization:()=>Internationalization,api:()=>api,default:()=>index,log:()=>log});var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(4),_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__),_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5),_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__),_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(6),_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_2__),clientnode__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(0),clientnode__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(clientnode__WEBPACK_IMPORTED_MODULE_3__),clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(1),clientnode_property_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__),web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(2),web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__),web_component_wrapper_Web__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(3),web_component_wrapper_Web__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(web_component_wrapper_Web__WEBPACK_IMPORTED_MODULE_6__),_dec,_dec2,_dec3,_dec4,_dec5,_class,_descriptor,_descriptor2,_descriptor3,_descriptor4,_descriptor5,_Internationalization;const log=new clientnode__WEBPACK_IMPORTED_MODULE_3__.Logger({name:"internationalization"});let Internationalization=(_dec=(0,web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__.property)({type:clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__.object}),_dec2=(0,web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__.property)({type:clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__.func}),_dec3=(0,web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__.property)({type:clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__.func}),_dec4=(0,web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__.property)({type:clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__.func}),_dec5=(0,web_component_wrapper_decorator__WEBPACK_IMPORTED_MODULE_5__.property)({type:clientnode_property_types__WEBPACK_IMPORTED_MODULE_4__.func}),_Internationalization=class e extends web_component_wrapper_Web__WEBPACK_IMPORTED_MODULE_6__.Web{constructor(...t){super(...t),this.self=e,this.switchLanguageButtonDomNodes=null,this.currentLanguage="enUS",this.knownTranslations={},this.lock=new clientnode__WEBPACK_IMPORTED_MODULE_3__.Lock,_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this,"options",_descriptor,this),_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this,"onEnsure",_descriptor2,this),_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this,"onSwitch",_descriptor3,this),_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this,"onEnsured",_descriptor4,this),_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this,"onSwitched",_descriptor5,this),this._domNodesToFade=[],this._replacements=[],this._textNodesWithKnownTranslation={}}onUpdateAttribute(e,t){super.onUpdateAttribute(e,t),"options"===e&&(this.options=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.extend)(!0,{},this.self._defaultOptions,this.options))}connectedCallback(){0===Object.keys(this.options).length&&this.onUpdateAttribute("options","{}"),this.options.preReplacementLanguagePattern=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.format)(this.options.preReplacementLanguagePattern,this.options.replacementLanguagePattern.substring(1,this.options.replacementLanguagePattern.length-1)),this.options.lockDescription=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.format)(this.options.lockDescription,this.self._name),this.options.sessionDescription=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.format)(this.options.sessionDescription,this.self._name),this.switchLanguageButtonDomNodes=this.root.querySelectorAll(`a[href^="#${this.options.languageHashPrefix}"]`),this._movePreReplacementNodes(),this.currentLanguage=this._normalizeLanguage(this.options.default);const e=this._determineUsefulLanguage(),t=0===this.options.selection.length;for(const e of this.switchLanguageButtonDomNodes){t&&this.options.selection.push(e.getAttribute("href").substring(`#${this.options.languageHashPrefix}`.length));const r=e=>{e.preventDefault();const t=e.target?.getAttribute("href");t&&this.switch(t.substring(this.options.languageHashPrefix.length+1))};this.addSecureEventListener(e,"click",r)}this.currentLanguage!==e?this.switch(e,!0):this._switchCurrentLanguageIndicator(e)}async switch(e,t=!1){if(!0===e||!this.options.selection.length||this.options.selection.includes(e)){if(await this.lock.acquire(this.options.lockDescription),!0===e?(t=!0,e=this.currentLanguage):e=this._normalizeLanguage(e),t&&e!==this.options.default||this.currentLanguage!==e){let r="Switch to";return t&&(r="Ensure"),log.debug(`${r} "${e}".`),this._switchCurrentLanguageIndicator(e),t?await this.onEnsure(this.currentLanguage):await this.onSwitch(this.currentLanguage,e),this._domNodesToFade=[],this._replacements=[],this._collectTextNodesToReplace(e,t),void await this._handleSwitchEffect(e,t)}log.debug(`"${e}" is already current selected language.`),this.lock.release(this.options.lockDescription)}else log.debug(`"${e}" isn't one of the allowed languages.`)}refresh(){return this._movePreReplacementNodes(),this.switch(!0)}async _handleSwitchEffect(e,t){const r=this.currentLanguage;if(!t&&this.options.useEffect&&this._domNodesToFade.length>0)return await Promise.all(this._domNodesToFade.map((e=>(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.fadeOut)(e)))),this._switchLanguage(e),await Promise.all(this._domNodesToFade.map((e=>(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.fadeIn)(e)))),this.onSwitched(r,e),void this.lock.release(this.options.lockDescription);this._switchLanguage(e),t?this.onEnsured(e):this.onSwitched(r,e),this.lock.release(this.options.lockDescription)}_movePreReplacementNodes(){const e=this;for(const t of(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getAll)(this.root)){const r=t.nodeName.toLowerCase();if(e.options.replacementDomNodeNames.includes(r)){["#comment","#text"].includes(r)||(t.style.visibility="hidden");const n=new RegExp(e.options.preReplacementLanguagePattern),o=t.textContent?.match(n);if(t.textContent&&o&&o[0]&&(t.textContent=t.textContent.replace(n,o[1]),t.parentElement)){let e=!1;for(const r of(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getAll)(t.parentElement)){if(e&&(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getText)(r).length>0){r.appendChild(t);break}t===r&&(e=!0)}}}}}_collectTextNodesToReplace(e,t){let r=null,n=null;this.knownTranslations={};for(const o of(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getAll)(this.root)){const i=o.nodeName.toLowerCase();if((0!==(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getText)(o).length||o.nodeType===Node.COMMENT_NODE&&""!==(o.nodeValue||"").trim())&&!r?.contains(o)&&!(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getParents)(o).some((e=>this.options.replaceDomNodeNames.concat(this.options.replacementDomNodeNames).includes(e.nodeName.toLowerCase()))))if(this.options.replaceDomNodeNames.includes(i))r=o;else if(r){if(this.options.replacementDomNodeNames.includes(i)){const s="#comment"===i?o.textContent:o.innerHTML,a=s?.match(new RegExp(this.options.replacementLanguagePattern));Array.isArray(a)&&a[1]===e?(this.knownTranslations[(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getText)(r).join(" ")]=a[2].trim(),n=this._ensureLastTextNodeHavingLanguageIndicator(r,n,t),this._registerTextNodeToChange(r,o,a,n),r=null,n=null):o.textContent?.match(new RegExp(this.options.currentLanguagePattern))&&(n=o);continue}r=null,n=null}}this._registerKnownTextNodes()}_registerKnownTextNodes(){this._textNodesWithKnownTranslation={};const e=this;for(const t of this.root.querySelectorAll(this.options.selectors.knownTranslation))for(const r of(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getAll)(t)){const t=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getText)(r).join(" ");t&&!e.options.replaceDomNodeNames.includes(r.nodeName.toLowerCase())&&!(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getParents)(r).some((e=>this.options.replaceDomNodeNames.includes(e.nodeName.toLowerCase())))&&Object.prototype.hasOwnProperty.call(e.knownTranslations,t)&&(this._domNodesToFade.push(r.parentElement),Object.prototype.hasOwnProperty.call(e._textNodesWithKnownTranslation,e.knownTranslations[t])?e._textNodesWithKnownTranslation[e.knownTranslations[t]].push(r):e._textNodesWithKnownTranslation[e.knownTranslations[t]]=[r])}}_normalizeLanguage(e){for(const[t,r]of Object.entries(this.options.languageMapping))if(r.includes(t.toLowerCase())||r.push(t.toLowerCase()),r.includes(e.toLowerCase()))return t;return this.options.default}_determineUsefulLanguage(){let e;return this.options.initial?e=this.options.initial:Object.prototype.hasOwnProperty.call(clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext,"window")&&(clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window?.localStorage.getItem(this.options.sessionDescription)?(e=clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window.localStorage.getItem(this.options.sessionDescription),log.debug(`Determine "${e}", because of local storage`,"information.")):clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window?.navigator.language&&(e=clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window.navigator.language,log.debug(`Determine "${e}", because of browser settings.`))),e||(e=this.options.default,log.debug(`Determine "${e}", because of default option.`)),e=this._normalizeLanguage(e),this.options.selection.length&&!this.options.selection.includes(e)&&(log.debug(`"${e}" isn't one of the allowed languages. Set`,`language to "${this.options.selection[0]}".`),e=this.options.selection[0]),clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window?.localStorage&&clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.window.localStorage.setItem(this.options.sessionDescription,e),e}_registerTextNodeToChange(e,t,r,n){this._domNodesToFade.push(e.parentElement),t&&this._replacements.push({textNodeToTranslate:e,nodeToReplaceWith:t,textToReplaceWith:r[2],currentLanguageDomNode:n})}_ensureLastTextNodeHavingLanguageIndicator(e,t,r){if(e&&!t){let n=this.currentLanguage;r&&(n=this.options.default||this.currentLanguage),(t=clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.document?.createComment(n)||null)&&e.after(t)}return t}_switchLanguage(e){for(const t of this._replacements){const r=Object.prototype.hasOwnProperty.call(t.textNodeToTranslate,"innerHTML")?t.textNodeToTranslate.innerHTML:t.textNodeToTranslate.textContent,n=r.trim();if(!this.options.templateDelimiter||!n.endsWith(this.options.templateDelimiter.post)&&this.options.templateDelimiter.post){let n=t.currentLanguageDomNode;if(!n){n=document.body;let e=!1;for(const r of(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.getAll)(t.textNodeToTranslate.parentElement)){if(e){t.currentLanguageDomNode=n=r;break}r===t.textNodeToTranslate&&(e=!0)}}const o=n.textContent;o&&e===o&&log.warn(`Text node "${t.textToReplaceWith}" is`,`marked as "${o}" and has same`,"translation language as it already is.");const i=t.nodeToReplaceWith.nodeName.toLowerCase();if("#comment"===i)t.textNodeToTranslate.after(clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.document.createComment(`${o}:${r}`));else{const e=clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.document.createElement(i);e.textContent=`${o}:${r}`,e.style.visibility="hidden",t.textNodeToTranslate.after(e)}t.textNodeToTranslate.after(clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.document.createComment(e)),"innerHTML"in t.textNodeToTranslate?t.textNodeToTranslate.innerHTML=t.textToReplaceWith:t.textNodeToTranslate.textContent=t.textToReplaceWith,n.remove(),t.nodeToReplaceWith.remove()}}for(const[e,t]of Object.entries(this._textNodesWithKnownTranslation))for(const r of t)r.textContent=e;clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.localStorage&&clientnode__WEBPACK_IMPORTED_MODULE_3__.globalContext.localStorage.setItem(this.options.sessionDescription,e),this.currentLanguage=e}_switchCurrentLanguageIndicator(e){for(const e of this.root.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${this.currentLanguage}"].`+this.options.currentLanguageIndicatorClassName))e.classList.remove(this.options.currentLanguageIndicatorClassName);for(const t of this.root.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${e}"]`))t.classList.add(this.options.currentLanguageIndicatorClassName)}},_Internationalization._name="WebInternationalization",_Internationalization._defaultOptions={currentLanguageIndicatorClassName:"current",currentLanguagePattern:"^[a-z]{2}[A-Z]{2}$",default:"enUS",useEffect:!0,initial:null,languageHashPrefix:"lang-",languageMapping:{deDE:["de","de_de","de-de","german","deutsch"],enUS:["en","en_us","en-us"],enEN:["en_en","en-en","english"],frFR:["fr","fr_fr","fr-fr","french"]},lockDescription:"{1}Switch",preReplacementLanguagePattern:"^\\|({1})$",replaceDomNodeNames:["#text","lang-replace"],replacementDomNodeNames:["#comment","lang-replacement"],replacementLanguagePattern:"^([a-z]{2}[A-Z]{2}):((.|\\s)*)$",selection:[],selectors:{knownTranslation:"div.toc"},sessionDescription:"{1}",templateDelimiter:{pre:"{{",post:"}}"}},_class=_Internationalization,_descriptor=_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype,"options",[_dec],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return{}}}),_descriptor2=_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype,"onEnsure",[_dec2],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return clientnode__WEBPACK_IMPORTED_MODULE_3__.NOOP}}),_descriptor3=_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype,"onSwitch",[_dec3],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return clientnode__WEBPACK_IMPORTED_MODULE_3__.NOOP}}),_descriptor4=_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype,"onEnsured",[_dec4],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return clientnode__WEBPACK_IMPORTED_MODULE_3__.NOOP}}),_descriptor5=_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype,"onSwitched",[_dec5],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return clientnode__WEBPACK_IMPORTED_MODULE_3__.NOOP}}),_class);const api={component:Internationalization,register:(e=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.camelCaseToDelimited)(Internationalization._name))=>{customElements.define(e,Internationalization)}},index=Internationalization;return __webpack_exports__})()));
|
package/package.json
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0.1",
|
|
3
|
+
"name": "web-internationalization",
|
|
4
|
+
"description": "Expand your audience",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"lang",
|
|
7
|
+
"language",
|
|
8
|
+
"internationalization"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://torben.website/internationalization",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"email": "info@torben.website",
|
|
13
|
+
"url": "https://github.com/thaibault/internationalization/issues"
|
|
14
|
+
},
|
|
15
|
+
"license": "CC-BY-3.0",
|
|
16
|
+
"author": {
|
|
17
|
+
"name": "Torben Sickert",
|
|
18
|
+
"email": "info@torben.website",
|
|
19
|
+
"url": "https://torben.website"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"index.d.ts",
|
|
23
|
+
"index.js",
|
|
24
|
+
"type.d.ts"
|
|
25
|
+
],
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/thaibault/internationalization"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "yarn build:types; yarn build:plain",
|
|
32
|
+
"build:bundle": "yarn build:types; yarn build:bundle:plain",
|
|
33
|
+
"build:bundle:plain": "weboptimizer build '{__reference__: \"target:bundle\"}'",
|
|
34
|
+
"build:plain": "weboptimizer build",
|
|
35
|
+
"build:types": "weboptimizer build:types",
|
|
36
|
+
"check": "yarn check:types; yarn lint",
|
|
37
|
+
"check:types": "weboptimizer check:types",
|
|
38
|
+
"clear": "weboptimizer clear",
|
|
39
|
+
"document": "weboptimizer document",
|
|
40
|
+
"lint": "weboptimizer lint",
|
|
41
|
+
"prepare": "yarn build",
|
|
42
|
+
"serve": "weboptimizer serve",
|
|
43
|
+
"start": "yarn serve",
|
|
44
|
+
"test": "yarn clear; weboptimizer test",
|
|
45
|
+
"test:browser": "yarn clear; weboptimizer test:browser",
|
|
46
|
+
"test:coverage": "yarn clear; weboptimizer test:coverage",
|
|
47
|
+
"test:coverage:report": "yarn clear; weboptimizer test:coverage:report",
|
|
48
|
+
"update:documentation": "documentation-website",
|
|
49
|
+
"watch": "weboptimizer build --watch"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@babel/eslint-parser": "^7.28.6",
|
|
53
|
+
"@babel/plugin-transform-proto-to-assign": "^7.27.1",
|
|
54
|
+
"@babel/runtime": "^7.29.2",
|
|
55
|
+
"@eslint/js": "^10.0.1",
|
|
56
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
57
|
+
"@types/ejs": "^3.1.5",
|
|
58
|
+
"@types/html-minifier": "^4.0.6",
|
|
59
|
+
"@types/imagemin": "^9.0.1",
|
|
60
|
+
"@types/jsdom": "^28.0.1",
|
|
61
|
+
"@types/node": "^25.6.0",
|
|
62
|
+
"@types/webpack-env": "^1.18.8",
|
|
63
|
+
"@typescript-eslint/eslint-plugin": "^8.58.1",
|
|
64
|
+
"@typescript-eslint/parser": "^8.58.1",
|
|
65
|
+
"@webcomponents/webcomponentsjs": "^2.8.0",
|
|
66
|
+
"clientnode": "^4.0.1386",
|
|
67
|
+
"documentation-website": "^1.0.401",
|
|
68
|
+
"eslint": "^10.2.0",
|
|
69
|
+
"eslint-config-google": "^0.14.0",
|
|
70
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
71
|
+
"favicons-webpack-plugin": "^6.0.1",
|
|
72
|
+
"image-minimizer-webpack-plugin": "^5.0.0",
|
|
73
|
+
"jest": "^30.3.0",
|
|
74
|
+
"jsdoc": "^4.0.5",
|
|
75
|
+
"prop-types": "^15.8.1",
|
|
76
|
+
"typescript-eslint": "^8.58.1",
|
|
77
|
+
"web-component-wrapper": "^0.0.557",
|
|
78
|
+
"weboptimizer": "^3.0.21",
|
|
79
|
+
"webpack-dev-server": "^5.2.3"
|
|
80
|
+
},
|
|
81
|
+
"peerDependencies": {
|
|
82
|
+
"@babel/runtime": "*",
|
|
83
|
+
"clientnode": "*",
|
|
84
|
+
"prop-types": "^15.8.1",
|
|
85
|
+
"web-component-wrapper": "*"
|
|
86
|
+
},
|
|
87
|
+
"peerDependenciesMeta": {
|
|
88
|
+
"@babel/runtime": {
|
|
89
|
+
"optional": true
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"engines": {
|
|
93
|
+
"node": ">=24",
|
|
94
|
+
"npm": ">=11",
|
|
95
|
+
"yarn": ">=4"
|
|
96
|
+
},
|
|
97
|
+
"resolutions": {
|
|
98
|
+
"colors": "1.4.0",
|
|
99
|
+
"globals@npm:^14.0.0": "patch:globals@npm%3A11.12.0#~/.yarn/patches/globals-npm-11.12.0-1fa7f41a6c.patch",
|
|
100
|
+
"globals@npm:^11.1.0": "patch:globals@npm%3A11.12.0#~/.yarn/patches/globals-npm-11.12.0-1fa7f41a6c.patch",
|
|
101
|
+
"globals@npm:^9.18.0": "patch:globals@npm%3A11.12.0#~/.yarn/patches/globals-npm-11.12.0-1fa7f41a6c.patch"
|
|
102
|
+
},
|
|
103
|
+
"sideEffects": false,
|
|
104
|
+
"documentationWebsite": {
|
|
105
|
+
"languages": [
|
|
106
|
+
"deDE",
|
|
107
|
+
"enUS",
|
|
108
|
+
"frFR"
|
|
109
|
+
],
|
|
110
|
+
"tagline": "Expand your audience<!--deDE:Erweitern Sie Ihr Publikum--><!--frFR:Élargir votre audience-->",
|
|
111
|
+
"trackingCode": "UA-40192634-6"
|
|
112
|
+
},
|
|
113
|
+
"webOptimizer": {
|
|
114
|
+
"commandLine": {
|
|
115
|
+
"test": {
|
|
116
|
+
"environments": [
|
|
117
|
+
"jsdom"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"generic": {
|
|
122
|
+
"supportedBrowsers": [
|
|
123
|
+
"browserslist config and supports es6-class"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"injection": {
|
|
127
|
+
"external": {
|
|
128
|
+
"implicit": {
|
|
129
|
+
"pattern": {
|
|
130
|
+
"exclude": {
|
|
131
|
+
"__append__": {
|
|
132
|
+
"__evaluate__": "/(?:^|\\/)web-component-wrapper(?:$|\\/)/"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"module": {
|
|
140
|
+
"html": {
|
|
141
|
+
"options": {
|
|
142
|
+
"sources": {
|
|
143
|
+
"urlFilter": {
|
|
144
|
+
"__evaluate__": "() => false"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"optimizer": {
|
|
150
|
+
"babelMinify": {
|
|
151
|
+
"#": "Avoids TypeError: Cannot read properties of undefined (reading 'add')",
|
|
152
|
+
"module": null
|
|
153
|
+
},
|
|
154
|
+
"htmlMinifier": {
|
|
155
|
+
"ignoreCustomComments": [
|
|
156
|
+
{
|
|
157
|
+
"__evaluate__": "/^\\|?[a-z]{2}[A-Z]{2}:/"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"__evaluate__": "/^[a-z]{2}[A-Z]{2}$/"
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"target:bundle": {
|
|
167
|
+
"module": {
|
|
168
|
+
"preprocessor": {
|
|
169
|
+
"javaScript": {
|
|
170
|
+
"options": {
|
|
171
|
+
"plugins": {
|
|
172
|
+
"__remove__": "@babel/plugin-transform-runtime"
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"webpack": {
|
|
180
|
+
"watchOptions": {
|
|
181
|
+
"ignored": {
|
|
182
|
+
"__prepend__": [
|
|
183
|
+
"**/node_modules/**/node_modules",
|
|
184
|
+
"**/node_modules/**/*.jsx",
|
|
185
|
+
"**/node_modules/**/*.ts",
|
|
186
|
+
"**/node_modules/**/*.tsx"
|
|
187
|
+
],
|
|
188
|
+
"__remove__": "**/node_modules"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"packageManager": "yarn@4.12.0+sha512.f45ab632439a67f8bc759bf32ead036a1f413287b9042726b7cc4818b7b49e14e9423ba49b18f9e06ea4941c1ad062385b1d8760a8d5091a1a31e5f6219afca8"
|
|
194
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
<!-- !/usr/bin/env markdown
|
|
2
|
+
-*- coding: utf-8 -*-
|
|
3
|
+
region header
|
|
4
|
+
Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
|
|
5
|
+
|
|
6
|
+
License
|
|
7
|
+
-------
|
|
8
|
+
|
|
9
|
+
This library written by Torben Sickert stand under a creative commons naming
|
|
10
|
+
3.0 unported license. See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
11
|
+
endregion -->
|
|
12
|
+
|
|
13
|
+
Project status
|
|
14
|
+
--------------
|
|
15
|
+
|
|
16
|
+
[](https://www.npmjs.com/package/internationalization)
|
|
17
|
+
[](https://www.npmjs.com/package/internationalization)
|
|
18
|
+
|
|
19
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/build.yaml)
|
|
20
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/build-package-and-push.yaml)
|
|
21
|
+
|
|
22
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/check-types.yaml)
|
|
23
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/lint.yaml)
|
|
24
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/test-coverage-report.yaml)
|
|
25
|
+
|
|
26
|
+
[](https://coveralls.io/github/thaibault/internationalization)
|
|
27
|
+
|
|
28
|
+
[](https://github.com/thaibault/internationalization/actions/workflows/deploy-documentation-website.yaml)
|
|
29
|
+
[](https://torben.website/internationalization)
|
|
30
|
+
|
|
31
|
+
<!--|deDE:Einsatz-->
|
|
32
|
+
<!--|frFR:Utilisier-->
|
|
33
|
+
Use case
|
|
34
|
+
--------
|
|
35
|
+
|
|
36
|
+
A WebComponent to replace alternate version of text for client side
|
|
37
|
+
internationalization.
|
|
38
|
+
<!--deDE:
|
|
39
|
+
Eine Web-Komponente zum klientseitigem Ersetzten von verschiedenen
|
|
40
|
+
Textversionen. Perfekt für die Internationalisierung Ihres Webprojekts.
|
|
41
|
+
-->
|
|
42
|
+
<!--frFR:
|
|
43
|
+
Un WebComponent pour remplacer version alternative de texte pour le côté
|
|
44
|
+
client l'internationalization.
|
|
45
|
+
-->
|
|
46
|
+
|
|
47
|
+
<!--Place for automatic generated table of contents.-->
|
|
48
|
+
<div class="doc-toc" style="display:none">
|
|
49
|
+
<!--|deDE:Inhalt-->
|
|
50
|
+
<h2 id="content">Content</h2>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<!--|deDE:Installation-->
|
|
54
|
+
Installation
|
|
55
|
+
------------
|
|
56
|
+
|
|
57
|
+
<!--|deDE:Klassische Dom-Integration-->
|
|
58
|
+
### Classical dom injection
|
|
59
|
+
|
|
60
|
+
You can simply download the compiled version as zip file here and inject it
|
|
61
|
+
after needed dependencies:
|
|
62
|
+
<!--deDE:
|
|
63
|
+
Du kannst einfach das Plugin als Zip-Archiv herunterladen und per
|
|
64
|
+
Script-Tag in deine Webseite integrieren:
|
|
65
|
+
-->
|
|
66
|
+
|
|
67
|
+
```HTML
|
|
68
|
+
<!--Inject downloaded file:
|
|
69
|
+
<script src="index.js"></script>
|
|
70
|
+
-->
|
|
71
|
+
<!--Or integrate via cdn:-->
|
|
72
|
+
<script
|
|
73
|
+
src="https://torben.website/internationalization/data/distributionBundle/index.js"
|
|
74
|
+
></script>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The compiled bundle supports AMD, commonjs, commonjs2 and variable injection
|
|
78
|
+
into given context (UMD) as export format: You can use a module bundler if you
|
|
79
|
+
want.
|
|
80
|
+
<!--deDE:
|
|
81
|
+
Das kompilierte Bundle unterstützt AMD, commonjs, commonjs2 und
|
|
82
|
+
Variable-Injection in den gegebenen Context (UMD) als Export-Format:
|
|
83
|
+
Dadurch können verschiedene Module-Bundler genutzt werden.
|
|
84
|
+
-->
|
|
85
|
+
|
|
86
|
+
<!--|deDE:Paket-Management und Modul-Komposition-->
|
|
87
|
+
### Package managed and module bundled
|
|
88
|
+
|
|
89
|
+
If you are using npm as package manager you can simply add this tool to your
|
|
90
|
+
**package.json** as dependency:
|
|
91
|
+
<!--deDE:
|
|
92
|
+
Nutzt du npm als Paket-Manager, dann solltest du einfach deine
|
|
93
|
+
<strong>package.json</strong> erweitern:
|
|
94
|
+
-->
|
|
95
|
+
|
|
96
|
+
```JSON
|
|
97
|
+
...
|
|
98
|
+
"dependencies": {
|
|
99
|
+
...
|
|
100
|
+
"internationalization": "latest",
|
|
101
|
+
...
|
|
102
|
+
},
|
|
103
|
+
...
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
After updating your packages you can simply depend on this script and let
|
|
107
|
+
a module bundler do the hard stuff or access it via an exported variable name
|
|
108
|
+
in given context.
|
|
109
|
+
<!--deDE:
|
|
110
|
+
Nach einem Update deiner Pakete kannst du dieses Plugin einfach in deine
|
|
111
|
+
JavaScript-Module importieren oder die exportierte Variable im gegebenen
|
|
112
|
+
Context referenzieren.
|
|
113
|
+
-->
|
|
114
|
+
|
|
115
|
+
```JavaScript
|
|
116
|
+
...
|
|
117
|
+
import Language from 'internationalization'
|
|
118
|
+
|
|
119
|
+
TODO
|
|
120
|
+
...
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
<!--|deDE:Verwendung-->
|
|
124
|
+
<!--|frFR:Demande-->
|
|
125
|
+
Usage
|
|
126
|
+
-----
|
|
127
|
+
|
|
128
|
+
To add two versions of a text string you can simply add your translation
|
|
129
|
+
directly in markup. See how easy it is:
|
|
130
|
+
<!--deDE:
|
|
131
|
+
Um zwei Sprachversionen eines Textknotens im Markup anzubieten, müssen
|
|
132
|
+
einfach nur per Kommentar alternative Versionen hinter dem zu übersetzenden
|
|
133
|
+
String gesetzt werden.
|
|
134
|
+
-->
|
|
135
|
+
<!--frFR:
|
|
136
|
+
Doit offrir deux versions linguistiques d'un nœud de texte dans la balise
|
|
137
|
+
acile à traduire que par Commentez versions alternatives derrière le
|
|
138
|
+
Chaîne à être réglé.
|
|
139
|
+
-->
|
|
140
|
+
|
|
141
|
+
<!--showExample-->
|
|
142
|
+
|
|
143
|
+
```HTML
|
|
144
|
+
<p>
|
|
145
|
+
Your englisch version.
|
|
146
|
+
<!--deDE:Ihre deutsche Variante.-->
|
|
147
|
+
<!--frFR:
|
|
148
|
+
Sa version française.
|
|
149
|
+
-->
|
|
150
|
+
</p>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Sometimes you need to explicit mark a text node as text to replace with next
|
|
154
|
+
translation node. In this case you can simply wrap a self defined dom node.
|
|
155
|
+
<!--deDE:
|
|
156
|
+
Manchmal muss man Textknoten explizit als übersetzbar markieren, da sie
|
|
157
|
+
beispielsweise selbst aus mehr als nur einem Knoten bestehen. In solchen
|
|
158
|
+
Fällen kann einfach ein selbst definierter DOM-Knoten ummantelt werden.
|
|
159
|
+
-->
|
|
160
|
+
<!--frFR:
|
|
161
|
+
Parfois, vous devez sélectionner explicitement les nœuds de texte comme
|
|
162
|
+
traduisible, car ils Ainsi, même consister en plus d'un noeud. dans ce Cas
|
|
163
|
+
peuvent être facilement enveloppé d'un noeud DOM auto-défini.
|
|
164
|
+
-->
|
|
165
|
+
|
|
166
|
+
<!--showExample-->
|
|
167
|
+
|
|
168
|
+
```HTML
|
|
169
|
+
<lang-replace>
|
|
170
|
+
Your englisch version with <strong>dom nodes</strong> inside.
|
|
171
|
+
</lang-replace>
|
|
172
|
+
<!--deDE:
|
|
173
|
+
Ihre deutsche Variante mit eingebetteten <strong>dom Knoten</strong>.
|
|
174
|
+
-->
|
|
175
|
+
<!--frFR:
|
|
176
|
+
Votre version français <strong>dom nodes</strong> à l'intérieur.
|
|
177
|
+
-->
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
It is also possible to use an alternative replacement node.
|
|
181
|
+
<!--deDE:Man kann auch einen alternativen Ersetzungsknoten einsetzten.-->
|
|
182
|
+
<!--frFR:
|
|
183
|
+
Donc, il est possible d'utiliser alternative à nœud de remplacement.
|
|
184
|
+
-->
|
|
185
|
+
|
|
186
|
+
<!--showExample-->
|
|
187
|
+
|
|
188
|
+
```HTML
|
|
189
|
+
<lang-replace>
|
|
190
|
+
Your englisch version with <strong>dom nodes</strong> inside.
|
|
191
|
+
</lang-replace>
|
|
192
|
+
<lang-replacement>deDE:
|
|
193
|
+
Ihre deutsche Variante mit eingebetteten <strong>dom Knoten</strong>.
|
|
194
|
+
</lang-replacement>
|
|
195
|
+
<lang-replacement>frFR:
|
|
196
|
+
Votre version français <strong>dom nodes</strong> à l'intérieur.
|
|
197
|
+
</lang-replacement>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Usually the language dom node precedes the text node to translate. It is
|
|
201
|
+
possible to write a special syntax to use a replacement for the next dom node
|
|
202
|
+
containing text.
|
|
203
|
+
<!--deDE:
|
|
204
|
+
Normalerweise folgt der Sprach-DOM-Knoten auf den Textknoten der übersetzt
|
|
205
|
+
werden soll. Es ist mit einer speziellen Syntax möglich einen
|
|
206
|
+
Sprach-DOM-Knoten für den darauf folgenden DOM-Knoten anzuwenden.
|
|
207
|
+
-->
|
|
208
|
+
<!--frFR:
|
|
209
|
+
Normalement, le nœud DOM voix suit le nœud de texte de la traduction
|
|
210
|
+
devrait être. Il est doté d'une syntaxe spéciale possible une Nœud voix Dom
|
|
211
|
+
pour le nœud DOM prochaine à utiliser.
|
|
212
|
+
-->
|
|
213
|
+
|
|
214
|
+
<!--showExample-->
|
|
215
|
+
|
|
216
|
+
```HTML
|
|
217
|
+
<!--|deDE:Ihre deutsche Variante.--><!--|frFR:Votre version français.-->
|
|
218
|
+
<p>Your englisch version.</p>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
It's possible to save one translation once if you specify the area with known
|
|
222
|
+
translations.
|
|
223
|
+
<!--deDE:
|
|
224
|
+
Es ist möglich, eine Übersetzung an nur einem Ort zu speichern, sofern der
|
|
225
|
+
Bereich mit bekannten Übersetzungen markiert wird.
|
|
226
|
+
-->
|
|
227
|
+
<!--frFR:
|
|
228
|
+
Il est possible d'enregistrer une traduction en un seul endroit, à moins
|
|
229
|
+
que le Région est marquée avec des traductions connues.
|
|
230
|
+
-->
|
|
231
|
+
|
|
232
|
+
<!--showExample-->
|
|
233
|
+
|
|
234
|
+
```HTML
|
|
235
|
+
<!--The "div.toc" selector defines the default known language area.-->
|
|
236
|
+
<div class="toc">
|
|
237
|
+
<ul>
|
|
238
|
+
<li><a href="title-1">title 1</a></li>
|
|
239
|
+
<ul>
|
|
240
|
+
<li><a href="title-2">title 2</a></li>
|
|
241
|
+
</ul>
|
|
242
|
+
</ul>
|
|
243
|
+
</div>
|
|
244
|
+
<h1 id="title-1">title 1<!--deDE:Titel 1--><!--frFR:titre 1--></h1>
|
|
245
|
+
<h2 id="title-2">title 2<!--deDE:Titel 2--><!--frFR:titre 2--></h2>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
With the below initialization you can simple add this links everywhere in your
|
|
249
|
+
page to switch language. On click, you will switch the current language
|
|
250
|
+
interactively. Try it by yourself:
|
|
251
|
+
<!--deDE:
|
|
252
|
+
Mit der unten aufgezeigten Konfiguration können Sie einfach folgenden Links
|
|
253
|
+
an beliebiger Stelle im Markup plazieren. Beim Klicken auf die
|
|
254
|
+
Sprach-Wechsel-Links wird die Sprache Ihrer Webseite entsprechend
|
|
255
|
+
angepasst. Versuchen Sie selbst:
|
|
256
|
+
-->
|
|
257
|
+
<!--frFR:
|
|
258
|
+
Avec la configuration au-dessous, vous pouvez simplement identifié les
|
|
259
|
+
liens suivants placer n'importe où dans le balisage. Lorsque vous cliquez
|
|
260
|
+
sur l' Langue échange de liens est la langue de votre site en conséquence
|
|
261
|
+
ajustée. Essayez par vous-même:
|
|
262
|
+
-->
|
|
263
|
+
|
|
264
|
+
<!--showExample-->
|
|
265
|
+
|
|
266
|
+
```HTML
|
|
267
|
+
<a href="#lang-deDE">de</a>
|
|
268
|
+
<a href="#lang-enUS">en</a>
|
|
269
|
+
<a href="#lang-frFR">fr</a>
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Here you can see a complete initialization example with all available options
|
|
273
|
+
to initialize the plugin with different configuration.
|
|
274
|
+
<!--deDE:
|
|
275
|
+
Hier können Sie ein Komplettbeispiel der Initialisierung sehen und alle
|
|
276
|
+
verfügbaren Optionen betrachten, um das Plugin in verschiedenen
|
|
277
|
+
Konfigurationen zu verwenden.
|
|
278
|
+
-->
|
|
279
|
+
<!--frFR:
|
|
280
|
+
Ici vous pouvez voir toutes les options disponibles pour le plug-in
|
|
281
|
+
différentes configurations pour initialiser.
|
|
282
|
+
-->
|
|
283
|
+
|
|
284
|
+
```HTML
|
|
285
|
+
<script
|
|
286
|
+
src="https://torben.website/internationalization/data/distributionBundle/index.js"
|
|
287
|
+
></script>
|
|
288
|
+
<script>
|
|
289
|
+
window.onload = function() {
|
|
290
|
+
internationalization.index.api.register()
|
|
291
|
+
}
|
|
292
|
+
</script>
|
|
293
|
+
```
|
package/type.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { HTMLItem, Mapping } from 'clientnode';
|
|
2
|
+
export interface Replacement {
|
|
3
|
+
textNodeToTranslate: HTMLItem;
|
|
4
|
+
nodeToReplaceWith: HTMLItem;
|
|
5
|
+
textToReplaceWith: string;
|
|
6
|
+
currentLanguageDomNode: HTMLItem | null;
|
|
7
|
+
}
|
|
8
|
+
export interface DefaultOptions {
|
|
9
|
+
currentLanguageIndicatorClassName: string;
|
|
10
|
+
currentLanguagePattern: string;
|
|
11
|
+
default: string;
|
|
12
|
+
useEffect: boolean;
|
|
13
|
+
initial: null | string;
|
|
14
|
+
languageHashPrefix: string;
|
|
15
|
+
languageMapping: Mapping<Array<string>>;
|
|
16
|
+
lockDescription: string;
|
|
17
|
+
preReplacementLanguagePattern: string;
|
|
18
|
+
replaceDomNodeNames: Array<string>;
|
|
19
|
+
replacementDomNodeNames: Array<string>;
|
|
20
|
+
replacementLanguagePattern: string;
|
|
21
|
+
selection: Array<string>;
|
|
22
|
+
selectors: {
|
|
23
|
+
knownTranslation: string;
|
|
24
|
+
};
|
|
25
|
+
sessionDescription: string;
|
|
26
|
+
templateDelimiter: (null | {
|
|
27
|
+
pre: string;
|
|
28
|
+
post: string;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export type Options = DefaultOptions;
|