Skip to content

Commit e8fa55f

Browse files
authored
Merge pull request #1008 from Patternslib/registry-improvements
Registry improvements
2 parents 11b60bc + 809c119 commit e8fa55f

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/core/base.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const initBasePattern = function ($el, options, trigger) {
2828
let pattern = $el.data(`pattern-${name}`);
2929
if (pattern === undefined && Registry.patterns[name]) {
3030
try {
31+
$el.data(`pattern-${name}`, "initializing");
3132
options =
3233
this.prototype.parser === "mockup"
3334
? mockupParser.getOptions($el, name, options)

src/core/registry.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,25 @@ if (typeof window.__patternslib_registry === "undefined") {
5050
window.__patternslib_registry = {};
5151
}
5252
export const PATTERN_REGISTRY = window.__patternslib_registry;
53+
if (typeof window.__patternslib_registry_initialized === "undefined") {
54+
window.__patternslib_registry_initialized = false;
55+
}
5356

5457
const registry = {
5558
patterns: PATTERN_REGISTRY, // reference to global patterns registry
5659
// as long as the registry is not initialized, pattern
5760
// registration just registers a pattern. Once init is called,
5861
// the DOM is scanned. After that registering a new pattern
5962
// results in rescanning the DOM only for this pattern.
60-
initialized: false,
6163
init() {
6264
$(document).ready(function () {
65+
if (window.__patternslib_registry_initialized) {
66+
// Do not reinitialize a already initialized registry.
67+
return;
68+
}
69+
window.__patternslib_registry_initialized = true;
6370
log.info("loaded: " + Object.keys(registry.patterns).sort().join(", "));
6471
registry.scan(document.body);
65-
registry.initialized = true;
6672
log.info("finished initial scan.");
6773
});
6874
},
@@ -211,7 +217,9 @@ const registry = {
211217
$.fn[plugin_name.replace(/^pat/, "pattern")] = $.fn[plugin_name];
212218
}
213219
log.debug("Registered pattern:", name, pattern);
214-
if (registry.initialized) {
220+
if (window.__patternslib_registry_initialized) {
221+
// Once the first initialization has been done, do only scan for
222+
// newly registered patterns.
215223
registry.scan(document.body, [name]);
216224
}
217225
return true;

0 commit comments

Comments
 (0)